stop using ioends for direct write completions
Darrick J. Wong
darrick.wong at oracle.com
Thu Jan 28 15:58:53 CST 2016
On Thu, Jan 28, 2016 at 10:10:56PM +0100, Christoph Hellwig wrote:
> On Thu, Jan 28, 2016 at 12:53:33PM -0800, Darrick J. Wong wrote:
> > On Thu, Jan 28, 2016 at 05:16:56AM -0800, Christoph Hellwig wrote:
> > > Any chance to get a review for this? It should really help
> > > with sorting out the buffered I/O COW code.
> >
> > It looks reasonable to me. I separated the dio and buffered CoW remap paths a
> > couple of weeks ago, because it seems that IO errors only get passed back as a
> > return value from __blockdev_direct_IO, therefore the remapping has to be done
> > from xfs_vm_do_dio anyway because we don't want to remap if the write fails.
> > Just yesterday I removed the "is_cow" flag from the ioend, so now we're back to
> > having a separate XFS_IO_COW ioend type.
>
> For direct I/O we will need something like this to properly support AIO
> writes.
Aw, snap, I knew I'd forgotten something. Yep, we'll need that... I think
xfs_end_io_direct_write will have to sniff out the error status from "size"
and either remap or discard the CoW allocations as appropriate.
Heh, guess I'd better go write some aio tests. :)
> > So... reflink doesn't need the patch but OTOH directio doesn't really need
> > the overhead of allocating an ioend anyway. :)
>
> Yep.
--D
More information about the xfs
mailing list