Re: stop using ioends for direct write completions

Christoph Hellwig
2016-02-02T11:17:51Z

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!