Re: [dm-devel] [for-4.16 PATCH 0/5] block, nvme, dm: allow DM multipath to use NVMe's error handler

2017-12-26 Thread Keith Busch
On Tue, Dec 19, 2017 at 04:05:41PM -0500, Mike Snitzer wrote: > These patches enable DM multipath to work well on NVMe over Fabrics > devices. Currently that implies CONFIG_NVME_MULTIPATH is _not_ set. > > But follow-on work will be to make it so that native NVMe multipath > and DM multipath can

Re: [dm-devel] [for-4.16 PATCH 0/5] block, nvme, dm: allow DM multipath to use NVMe's error handler

2017-12-26 Thread Mike Snitzer
On Tue, Dec 26 2017 at 3:51pm -0500, Keith Busch wrote: > On Tue, Dec 19, 2017 at 04:05:41PM -0500, Mike Snitzer wrote: > > These patches enable DM multipath to work well on NVMe over Fabrics > > devices. Currently that implies CONFIG_NVME_MULTIPATH is _not_ set. > > > > But follow-on work wil

[dm-devel] [for-4.16 PATCH v2 2/5] nvme: use request_queue's failover_rq_fn callback for multipath failover

2017-12-26 Thread Mike Snitzer
Also, remove NVMe-local REQ_NVME_MPATH since setting request_queue's failover_rq_fn serves the same purpose. NVMe's error handling gives a request further consideration about it being retryable if its request_queue has failover_rq_fn set. Signed-off-by: Mike Snitzer --- drivers/nvme/host/core.c

[dm-devel] [for-4.16 PATCH v2 0/5] block, nvme, dm: allow DM multipath to use NVMe's error handler

2017-12-26 Thread Mike Snitzer
This v2 follows Keith's suggestion to only add a 'failover_rq_fn' to the request_queue (rather than both the bio and request structs). Jens or Christoph, provided review is favorable, I'd very much appreciate it you'd pick up patches 1 - 3 for 4.16. These patches enable DM multipath to work well

[dm-devel] [for-4.16 PATCH v2 1/5] block: establish request failover callback

2017-12-26 Thread Mike Snitzer
All requests allocated from a request_queue with this callback set can failover their requests during completion. This callback is expected to use the blk_steal_bios() interface to transfer a request's bios back to an upper-layer bio-based request_queue. This will be used by both NVMe multipath a

[dm-devel] [for-4.16 PATCH v2 3/5] nvme: move nvme_req_needs_failover() from multipath to core

2017-12-26 Thread Mike Snitzer
nvme_req_needs_failover() could be used regardless of whether CONFIG_NVME_MULTIPATH is set. DM multipath will also make use of it. Signed-off-by: Mike Snitzer --- drivers/nvme/host/core.c | 46 +++ drivers/nvme/host/multipath.c | 46 -

[dm-devel] [for-4.16 PATCH v2 5/5] dm mpath: skip calls to end_io_bio if using NVMe bio-based and round-robin

2017-12-26 Thread Mike Snitzer
Add a 'skip_endio_hook' flag member to 'struct dm_target' that if set instructs calls to .end_io (or .rq_end_io) to be skipped. NVMe bio-based doesn't use multipath_end_io_bio() for anything other than updating the path-selector. So it can be avoided completely if the round-robin path selector is

[dm-devel] [for-4.16 PATCH v2 4/5] dm mpath: use NVMe error handling to know when an error is retryable

2017-12-26 Thread Mike Snitzer
Like NVMe's native multipath support, DM multipath's NVMe bio-based support now allows NVMe core's error handling to requeue an NVMe blk-mq request's bios onto DM multipath's queued_bios list for resubmission once fail_path() occurs. multipath_failover_rq() serves as a replacement for the traditio