Re: [RFC PATCH v1 0/7] Block/XFS: Support alternative mirror device retry

From: Dave Chinner
Date: Wed Nov 28 2018 - 02:46:19 EST


On Tue, Nov 27, 2018 at 11:37:22PM -0800, Christoph Hellwig wrote:
> On Wed, Nov 28, 2018 at 04:33:03PM +1100, Dave Chinner wrote:
> > One thing that is going to make this more complex at the XFS layer
> > is discontiguous buffers. They require multiple IOs (and therefore
> > bios) and so we are going to need to ensure that all the bios use
> > the same bi_rw_hint.
>
> Well, in case of raid 1 the load balancing code might actually
> map different bios to different initial legs. What we really need
> is to keep the 'index' or each bio. One good way to archive that
> is to just reuse the bio for the retry instead of allocating a new one.

Not sure that is practical, because by the time we run the verifier
that discovers the error we've already released and freed all the
bios. And we don't know when we complete the individual bios whether
to kep it or not as the failure may occur in a bio that has not yet
completed.

Maybe we should be chaining bios for discontig buffers rather than
submitting them individually - that keeps the whole chain around
until all bios in the chain have completed, right?

Cheers,

Dave.
--
Dave Chinner
david@xxxxxxxxxxxxx