From: Zheng Liu Date: Sat, 30 Jun 2012 23:12:57 +0000 (-0400) Subject: ext4: honor O_(D)SYNC semantic in ext4_fallocate() X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=f4e95b3316c4daa43224753bb98f41456fef86c7;p=GitHub%2Fexynos8895%2Fandroid_kernel_samsung_universal8895.git ext4: honor O_(D)SYNC semantic in ext4_fallocate() Ext4 must make sure the transaction to be commited to the disk when user opens a file with O_(D)SYNC flag and do a fallocate(2) call. This problem had been reported by Christoph Hellwig in this thread: http://www.spinics.net/lists/linux-btrfs/msg13621.html Reported-by: Christoph Hellwig Signed-off-by: Zheng Liu Signed-off-by: "Theodore Ts'o" --- diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 91341ec6e06a..f1089cba913a 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -4420,6 +4420,8 @@ retry: ext4_falloc_update_inode(inode, mode, new_size, (map.m_flags & EXT4_MAP_NEW)); ext4_mark_inode_dirty(handle, inode); + if ((file->f_flags & O_SYNC) && ret >= max_blocks) + ext4_handle_sync(handle); ret2 = ext4_journal_stop(handle); if (ret2) break;