dm mpath: use NVMe error handling to know when an error is retryable
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 traditional multipath_end_io_bio().
DM multipath's bio submission to NVMe must be done in terms that allow
the reuse of NVMe core's error handling. The following care is taken to
realize this reuse:
- NVMe core won't attempt to retry an IO if it has
REQ_FAILFAST_TRANSPORT set; so only set it in __map_bio().
- Setup bio's bi_failover_rq hook, to use multipath_failover_rq, so that
NVMe blk-mq requests inherit it for use as the failover_rq callback
if/when NVMe core determines a request must be retried.
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
1 file changed