From: Dmitry Monakhov <dmonak...@openvz.org> If filesystem was aborted after inode's write back is complete but before its metadata was updated we may return success results in data loss. In order to handle fs abort correctly we have to check fs state once we discover that it is in MS_RDONLY state
Signed-off-by: Dmitry Monakhov <dmonak...@openvz.org> +++ ext4: fix broken fsync for dirs/symlink mFixes commit 6a63db16da84fe ("ext4: Fix error handling after filesystem abort"). xfstests: generic/321 generic/335 generic/348 Signed-off-by: Dmitry Monakhov <dmonak...@openvz.org> (cherry picked from vz7 commit 00399757c828ee82941123f6c67e7c96d906ce2b) Signed-off-by: Konstantin Khorenko <khore...@virtuozzo.com> Signed-off-by: Kirill Tkhai <ktk...@virtuozzo.com> --- fs/ext4/super.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 685686f5b849..6cf2d3e0ed8f 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -5784,8 +5784,12 @@ int ext4_force_commit(struct super_block *sb) { journal_t *journal; - if (sb_rdonly(sb)) + if (sb_rdonly(sb)) { + smp_rmb(); + if (EXT4_SB(sb)->s_mount_flags & EXT4_MF_FS_ABORTED) + return -EROFS; return 0; + } journal = EXT4_SB(sb)->s_journal; return ext4_journal_force_commit(journal); _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel