On Tue 27-11-12 11:19:41, Jeff Moyer wrote:
Christoph Hellwig [off-list ref] writes:
quoted
Call generic_write_sync from the deferred I/O completion handler if
O_DSYNC is set for a write request. Also make sure various callers
don't call generic_write_sync if the direct I/O code returns
-EIOCBQUEUED.
Note: this currently breaks ext4 due to it's convoluted unwritten
extent conversion code. I've tried to understand it and as far
as I can see it's a workaround for the fact that ext4 marks page
writeback as completed before converting unwritten extents.
Ext4 should follow xfs on this and only mark writeback as completed
when it really is and at that point can remove the big hairy mess to
force unwritten extent conversions from fsync, truncate and a few other
places.
Well, I've tested the xfs bits, and there are no regressions. I won't
bother testing ext4 until a full solution is in place. Jan, is this
something you have the time for and/or interest in doing?
Back from vacation... I see Darrick started looking at it but it didn't
quite work out? I'll have a look at it since that code in ext4 has been
nagging me for quite a while as well ... after I sort out the most urgent
stuff (maybe later this week or early next week).
Honza
--
Jan Kara [off-list ref]
SUSE Labs, CR