stop using ioends for direct write completions

Christoph Hellwig hch at lst.de
Tue Feb 2 05:17:40 CST 2016


On Mon, Feb 01, 2016 at 01:54:07PM -0800, Darrick J. Wong wrote:
> Also: I've noticed that if I write 8MB file to a file backed by a failing
> device, xfs_end_io_direct_write() gets called with size == 8MB even if the
> writes failed.  If the write was to an unwritten extent, the extent will be
> converted to a regular extent even though the blocks contain old file contents
> and other garbage, which can subsequently be read off the disk.
> 
> For CoW I'd only want to remap the blocks if the write totally succeeds.  If a
> disk error happens, the EIO code gets passed back to userspace, and it seems
> logical to me that the file contents should remain unchanged.
> 
> To that end, I'm changing dio_iodone_t to pass an error code, and I think I
> want to change XFS to avoid doing unwritten extent conversions when the write
> fails.  Does that make sense?

I have some of these patches prepared already, I'm just too busy keeping
up with all your changes.  I'll rebase and post this ASAP!



More information about the xfs mailing list