quoted
quoted
OK, so I was looking into the code and indeed, reality is correct
and my mental model was wrong! ;) I thought that inode gets added to
the list of inodes for which we need to wait for data IO completion
during transaction commit during block allocation. And I was wrong.
It used to happen in
mpage_da_map_and_submit() until commit f3b59291a69d (ext4: remove
calls to
ext4_jbd2_file_inode() from delalloc write path) where it got
removed. And that was wrong because although we submit data writes
before dropping handle for allocating transaction and updating
i_size, nobody guarantees that data IO is not delayed in the block layer until
transaction commit.
quoted
quoted
Which seems to happen in your case. I'll send a fix. Thanks for your
report and persistence!
Thanks a lot for your feedback :-)
Because I am not familiar with the detail of the ext4 internal code. I will try to
understand your explanation which you describe above. And have a look on
related funcations.
quoted
Could you send the fix in this mail ?
And whether the kernel 3.14 also have such issue, right ?
The problem is in all kernels starting with 3.8. Attached is a patch which should fix
the issue. Can you test whether it fixes the problem for you?
Honza
--
Yes, of course I will redo the test with the patch. And also give you feedback.
Thanks.
Huang weller
Jan Kara [off-list ref]
SUSE Labs, CR