You might need to configure multipathing to queue I/O if all paths fail concurrently. In certain scenarios, where the driver, the HBA, or the fabric experiences spurious errors, it is advisable that DM-MP be configured to queue all I/O where those errors lead to a loss of all paths, and never propagate errors upwards. Because this leads to I/O being queued indefinitely unless a path is reinstated, make sure that multipathd is running and works for your scenario. Otherwise, I/O might be stalled indefinitely on the affected multipathed device, until reboot or until you manually return to failover instead of queuing.
To test the scenario:
In a terminal console, log in as the root user.
Activate queuing instead of failover for the device I/O by entering:
dmsetup message device_ID 0 queue_if_no_path
Replace the device_ID with the ID for your device. For example, enter:
dmsetup message 3600601607cf30e00184589a37a31d911 0 queue_if_no_path
Return to failover for the device I/O by entering:
dmsetup message device_ID 0 fail_if_no_path
This command immediately causes all queued I/O to fail.
Replace the device_ID with the ID for your device. For example, enter:
dmsetup message 3600601607cf30e00184589a37a31d911 0 fail_if_no_path
To set up queuing I/O for scenarios where all paths fail:
In a terminal console, log in as the root user.
Open the /etc/multipath.conf file in a text editor.
Uncomment the defaults section and its ending bracket, then add the default_features setting, as follows:
defaults {
default_features "1 queue_if_no_path"
}
When you are ready to return over to failover for the device I/O, enter:
dmsetup message mapname 0 fail_if_no_path
Replace the mapname with the mapped alias name or the device ID for the device.
This command immediately causes all queued I/O to fail and propagates the error to the calling application.