Comment 0 for bug 1578654

Revision history for this message
Dan Streetman (ddstreet) wrote : multipath does not set sysfs params correctly

[Impact]

multipath has configuration settings such as "dev_loss_tmo" and "fast_io_fail_tmo" which multipath uses to change the underlying device's parameters. However, it fails to set any of them; it is trying to write the parameters to the sysfs device's directory, instead of the attribute file inside the dir. This results in configuration parameters that the user provides not having any effect at all, and no error logs being shown.

The commit 050b24b33d3c60e29f7820d2fb75e84a9edde528 ("multipath: fix setting sysfs fc timeout parameters") from upstream multipath-tools fixes the bug by actually using the sysfs attribute files, instead of the sysfs device directory.

[Test Case]

A system with either fiberchannel or iSCSI drive(s), with multiple redundant paths to the drive(s), is required. The FC/iSCSI drives must be configured and appear in the system, i.e. as /dev/sd* or similar node that multipath scans.

Check the current value:

(for iSCSI; replace 'sessionN' with the session number, e.g. 'session1')
# cat /sys/class/iscsi_session/sessionN/
(for FC; replace 'rport-N:N-N' with the rport number, e.g. 'rport-0:0-1')
# cat /sys/class/fc_remote_ports/rport-N:N-N/fast_io_fail_tmo

Install multipath-tools, and edit (or create) the /etc/multipath.conf file. Add into the defaults section the setting for fast_io_fail_tmo; if it's already 5, replace 5 shown in the example with a different value than it's currently set to:

defaults {
  fast_io_fail_tmo 5
}

If the multipath-tools-boot package is installed, rebuild the initramfs (with update-initramfs -u).

Reboot for the parameter to take effect.

After the system boots back up, multipath should have the drive(s) listed, e.g. in its 'multipath -ll' listing.

Check the sysfs node that should have been modified:

(for iSCSI; replace 'sessionN' with the session number, e.g. 'session1')
# cat /sys/class/iscsi_session/sessionN/
(for FC; replace 'rport-N:N-N' with the rport number, e.g. 'rport-0:0-1')
# cat /sys/class/fc_remote_ports/rport-N:N-N/fast_io_fail_tmo

It should show the value that was configured in multipath.conf.

[Regression Potential]

none. This fixes multipath to correctly set sysfs attributes, as it did not work at all before.