xfs
[Top] [All Lists]

Re: stop using ioends for direct write completions

To: "Darrick J. Wong" <darrick.wong@xxxxxxxxxx>
Subject: Re: stop using ioends for direct write completions
From: Christoph Hellwig <hch@xxxxxx>
Date: Tue, 2 Feb 2016 12:17:40 +0100
Cc: Dave Chinner <david@xxxxxxxxxxxxx>, Brian Foster <bfoster@xxxxxxxxxx>, Christoph Hellwig <hch@xxxxxxxxxxxxx>, xfs@xxxxxxxxxxx, Christoph Hellwig <hch@xxxxxx>
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <20160201215407.GI20038@xxxxxxxxxxxxxxxx>
References: <1452766237-2314-1-git-send-email-hch@xxxxxx> <20160128131656.GB14876@xxxxxxxxxxxxx> <20160129141232.GA43184@xxxxxxxxxxxxxxx> <20160201215407.GI20038@xxxxxxxxxxxxxxxx>
User-agent: Mutt/1.5.17 (2007-11-01)
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!

<Prev in Thread] Current Thread [Next in Thread>