[dm-devel] [PATCH v2] block, dm: don't copy bios for request clones

Christoph Hellwig hch at infradead.org
Sun Apr 26 14:20:23 UTC 2015


On Sat, Apr 25, 2015 at 08:13:28PM +0200, Hannes Reinecke wrote:
> I seem to remember having sent a similar patch about a year ago;

This one?
http://www.redhat.com/archives/dm-devel/2014-June/msg00023.html

> which then got shot down due to the missing partial completion
> handling.

It got shot down because it passed the upper level request down,
which is a non-no for blk-mq.

> Anyway; we've discussed this at LSF in Boston, haven't we?
> AFAICR we've found that having to resubmit the entire command
> in the case of partial completion is okay with the storage
> vendors, so this patch is a viable way of handling things.

Yes.  But even if it wasn't for some reason we could inspect blk_rq_bytes()
on the clone and do a partial completion on the original request, but
I'd prefer to avoid special casing this case if we can avoid it.

> _But_ I really would like to have a consensus here that this
> _is_ the correct way of handling partial request; because
> if that is the case then we should adopt this strategy
> throughout the SCSI layer (ie in scsi_io_completion())
> and document the fact.

SCSI is a very different case, we do regularly get patial completions
from arrays, and we need to handle them efficiently in the normal
I/O path.  The only case where we will resubmit completed I/O in
dm-mpath is when we got a successfull partial completion in SCSI,
and then a following completions returns an error that causes a
failover.  I don't think there is a need to micro-optimize this case.




More information about the dm-devel mailing list