Searched hist:"1 c9114f9c0f10f58dd7e568a7152025af47b27e5" (Results 1 – 1 of 1) sorted by relevance
/openbmc/linux/fs/ext4/ |
H A D | inode.c | diff 1c9114f9c0f10f58dd7e568a7152025af47b27e5 Fri Sep 28 23:55:23 CDT 2012 Dmitry Monakhov <dmonakhov@openvz.org> ext4: serialize unlocked dio reads with truncate
Current serialization will works only for DIO which holds i_mutex, but nonlocked DIO following race is possible:
dio_nolock_read_task truncate_task ->ext4_setattr() ->inode_dio_wait() ->ext4_ext_direct_IO ->ext4_ind_direct_IO ->__blockdev_direct_IO ->ext4_get_block ->truncate_setsize() ->ext4_truncate() #alloc truncated blocks #to other inode ->submit_io() #INFORMATION LEAK
In order to serialize with unlocked DIO reads we have to rearrange wait sequence 1) update i_size first 2) if i_size about to be reduced wait for outstanding DIO requests 3) and only after that truncate inode blocks
Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
|