[dm-devel] [RFC PATCH 0/7] dm-mpath: Do not clone requests

Christoph Hellwig hch at infradead.org
Thu Jun 5 14:44:32 UTC 2014


On Thu, Jun 05, 2014 at 03:55:29PM +0200, Hannes Reinecke wrote:
> The primary reason for cloning the bios would from my POV would be
> so that we can handle partial completion properly. When eliminating
> it we would be always return an error here.

I don't see how partial completions matter - we never finish a partial
request in the low level driver and let DM retry.  All partial
completion handling stays in the low level driver.

If we'd didn't clone bios the workflow would look something like this:

 - allocate new clone request in dm-mpath
 - point clone->bio and clone->biotail to the original bio, zero
   them out in the original request
 - the low level driver does one or more calls to blk_update_request
   until clone->bio is NULL, and then calls blk_finish_request (or
   __blk_mq_end_io) once the request has been completed,
 - This hands control back to dm-mpath, which can now call
   __blk_mq_end_io without blk_update_request as the low level driver
   took care of the bio completions.




More information about the dm-devel mailing list