> -----Original Message----- > From: HUANG Weller (CM/ESW12-CN) > Sent: Friday, January 08, 2016 8:47 AM > To: 'Jan Kara' <jack@xxxxxxx> > Cc: linux-ext4@xxxxxxxxxxxxxxx; Li, Michael <huayil@xxxxxxxxxxxxxxxx> > Subject: RE: ext4 out of order when use cfq scheduler > > > > > > > > > > > > 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. > > > > 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. > > > 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. Test result: Test on 2 targets with the kernel applied your patch. Both of them are OK after 5000 power failure tests. Our target test cycle is 10,000. By the way, since your original patch can't be applied on 3.x kernel, The attached one is based on yours and can applied on old kernel(mine is 3.10) directly. > > > Jan Kara <jack@xxxxxxxx> > > SUSE Labs, CR
Attachment:
0001-ext4-Fix-data-exposure-after-a-crash.patch
Description: 0001-ext4-Fix-data-exposure-after-a-crash.patch