]> git.baikalelectronics.ru Git - kernel.git/commit
aio: fix freeze protection of aio writes
authorJan Kara <jack@suse.cz>
Sun, 30 Oct 2016 16:42:04 +0000 (11:42 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 30 Oct 2016 17:09:42 +0000 (13:09 -0400)
commit6c9601d8a7681a27df42b6517866c29eecc11eae
treec5797bacdc9175af6658c9548387b52749cda6ee
parente426ba32ca6ed2441023f654eb5b3f01c703874c
aio: fix freeze protection of aio writes

Currently we dropped freeze protection of aio writes just after IO was
submitted. Thus aio write could be in flight while the filesystem was
frozen and that could result in unexpected situation like aio completion
wanting to convert extent type on frozen filesystem. Testcase from
Dmitry triggering this is like:

for ((i=0;i<60;i++));do fsfreeze -f /mnt ;sleep 1;fsfreeze -u /mnt;done &
fio --bs=4k --ioengine=libaio --iodepth=128 --size=1g --direct=1 \
    --runtime=60 --filename=/mnt/file --name=rand-write --rw=randwrite

Fix the problem by dropping freeze protection only once IO is completed
in aio_complete().

Reported-by: Dmitry Monakhov <dmonakhov@openvz.org>
Signed-off-by: Jan Kara <jack@suse.cz>
[hch: forward ported on top of various VFS and aio changes]
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/aio.c
include/linux/fs.h