From: Fabian Frederick Date: Thu, 26 Jun 2014 00:42:21 +0000 (+1000) Subject: fs/ext4/fsync.c: generic_file_fsync call based on barrier flag X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=74326d2ebfd0118fd3ca4fd6479d650c1b6d7782;p=karo-tx-linux.git fs/ext4/fsync.c: generic_file_fsync call based on barrier flag generic_file_fsync has been updated to issue a flush for older filesystems. This patch tests for barrier flag in ext4 mount flags and calls the right function. Lukas said: : Note that the actual generic_file_fsync change fixes a real bug in ext4 : where we would _not_ send a flush on sync if we have file system : without journal. : : Ted, it would be useful to mention that in the commit description : along with the commit id: : : ac13a829f6adb674015ab399594c089990104af7 fs/libfs.c: add generic : data flush to fsync Signed-off-by: Fabian Frederick Suggested-by: Jan Kara Suggested-by: Christoph Hellwig Reviewed-by: Lukas Czerner Cc: Jan Kara Cc: Christoph Hellwig Cc: Alexander Viro Cc: "Theodore Ts'o" Signed-off-by: Andrew Morton --- diff --git a/fs/ext4/fsync.c b/fs/ext4/fsync.c index a8bc47f75fa0..5b6e9f246233 100644 --- a/fs/ext4/fsync.c +++ b/fs/ext4/fsync.c @@ -107,7 +107,10 @@ int ext4_sync_file(struct file *file, loff_t start, loff_t end, int datasync) } if (!journal) { - ret = generic_file_fsync(file, start, end, datasync); + if (test_opt(inode->i_sb, BARRIER)) + ret = generic_file_fsync(file, start, end, datasync); + else + ret = __generic_file_fsync(file, start, end, datasync); if (!ret && !hlist_empty(&inode->i_dentry)) ret = ext4_sync_parent(inode); goto out;