Description of problem:
Currently, the SCSI sense data returned by the host/target/driver layer on an
I/O error is not made available to device-mapper since the latter operates at
the bio layer rather than at the request level.
Having access to the sense buffer would allow dm-mpio to make more informed
decisions when an error occurs, for example, avoiding failing a path entirely if
the sense data indicates a transient error that the host should retry immediately.
Patches have been proposed to implement this but have not been merged upstream.
Further work is ongoing to find a solution that provides this functionality & is
This bugzilla is to track the possible inclusion of such functionality in RHEL6.
This is based on the patches from Kiyoshi Ueda and Jun'ichi Nomura from NEC that are already upstream and in Fedora. You can find some discussion of this in the proceedings of the 2007 Ottawa Linux Symposium here:
There's also an old LWN article here that contains some of Kiyoshi's posts on the subject:
There are more recent threads that you can find in the archives, e.g. the posting of the patch series that ended up getting merged.
If you're interested in the upstream commits that introduced these changes the following commits (in Linus' tree, linux-2.6.git) provide the history:
For convenience I'll post the patch headers in a follow-on comment.
Created attachment 394892 [details]
Headers from the request-based dm patches merged upstream
Request-based DM multipath does not change multipath-tools at all. Though the user can choose to make use of 2 new path selectors that were introduced along with request-based DM multipath.
Here are more details on the new path-selectors; from the RHEL6 (alpha2) release notes:
8.1 Dynamic Load Balancing Added to device-mapper-multipath.
Two new load balancing algorithms have been added to device-mapper-multipath.
One performs path selection based the observed queue depth at each path. The
other selects the path based on the measured service time for previous I/O on
The path-selector that is used is configured in /etc/multipath.conf. This is
done in the 'defaults' section (applies to all mpath devices) by setting
"selector" to "queue-length 0" or "service-time 0" or "round-robin 0". For
selector "queue-length 0"
This can also be done for specific multipath devices in the 'device' section
by setting the "path_selector" value. For example:
path_selector "service-time 0"
If no selector is specified, it defaults to "round-robin 0".
Red Hat Enterprise Linux 6.0 is now available and should resolve
the problem described in this bug report. This report is therefore being closed
with a resolution of CURRENTRELEASE. You may reopen this bug report if the
solution does not work for you.