Thread (8 messages) 8 messages, 4 authors, 2015-11-25

Re: [PATCH] ext4: fix race aio-dio vs freeze_fs

From: Jan Kara <jack@suse.cz>
Date: 2015-11-25 09:19:20
Also in: linux-fsdevel, linux-xfs

On Tue 24-11-15 20:55:40, Dmitry Monakhov wrote:
On Nov 24, 2015 16:25, "Jan Kara" [off-list ref] wrote:
quoted
On Mon 23-11-15 20:02:48, Dmitry Monakhov wrote:
quoted
After freeze_fs was revoked (from Jan Kara) pages's write-back
completion
quoted
quoted
is deffered before unwritten conversion, so explicit
flush_unwritten_io()
quoted
quoted
was removed here: c724585b62411
But we still may face deferred conversion for aio-dio case
# Trivial testcase
for ((i=0;i<60;i++));do fsfreeze -f /mnt ;sleep 1;fsfreeze -u /mnt;done
&
quoted
quoted
fio --bs=4k --ioengine=libaio --iodepth=128 --size=1g --direct=1 \
    --runtime=60 --filename=/mnt/file --name=rand-write --rw=randwrite
NOTE: Sane testcase should be integrated to xfstests, but it requires
changes in common/* code, so let's use this this test at the moment.

In order to fix this race we have to guard journal transaction with
explicit
quoted
quoted
sb_{start,end}_intwrite()  as we do with ext4_evict_inode here:8e8ad8a5
Well, this problem seems to suggest that we have the freeze protection for
AIO writes wrong. We should call file_end_write() from aio_complete() and
not from aio_run_iocb()...
Yep. It was my first attempt to fix that issue, but  unfortunately this
trick will break lockdep. Caller will do file_start_write and exit to
userspace. Lockdep treats such behaviour as bug (return to userspace with a
lock held)

There are two way to fix that
1) add specific 'long' lock primitive to lockdep
The way we tell lockdep about transfer of context is that we just lie to
lockdep and tell it that the lock got unlocked at appropriate place and
then tell it we locked it again at another place. It is somewhat ugly but
not that hard to do... Generally lockdep is a tool that should help but by
no means it should be a reason for poor locking decisions just because
lockdep cannot handle them.

								Honza
--
Jan Kara [off-list ref]
SUSE Labs, CR

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help