Public bug reported:

I've notice recently that multipathd started hanging when trying to
handle long iscsi target names. In my case these targets are generated
by the OpenStack cinder driver for SolidFire.

My guess is that the problem is occurring due to a bug introduced in
multipath-tools 0.7.4, by commit "limbultipath: prefer RDAC checker with
detect_checker*"*[1].

This change adds a routine to check RDAC compatibility during the
detect_checker procedure, which runs into an infinite loop in the piece
of code that tries to gather SCSI VPD pages larger than 254 bytes (this
is my case due to long iSCSI Target names).

This issue was later addressed by several commits in 0.7.5 and 0.7.6:
"libmultipath: sgio_get_vpd: add page argument" [2], "libmultipath: Fix
sgio_get_vpd()" [3], "libmultipath: fix return code of sgio_get_vpd()"
[4], "libmultipath: get_vpd_sgio: support VPD 0xc9" [5].

I've found a temporary work around for this by using select_checker =
“no” in Ubuntu 18. This appears to avoid the problem by skipping RDAC
compatibility check code.

Also, I've also tested 0.8.3 in a RH environment and found no issues
running default select_checker = “yes” (Ubuntu 20 also delivers 0.8.3).
‌


So, in short:

- Looks like Ubuntu multipath-tools is broken, 
- There is a fix in newer versions that aren’t in the ubuntu 18 repo yet. 
- The OpenStack Cinder driver for Solidfire just happen to hit this bug because 
of the long names
- Setting select_checker = “no” is an possible work-around until Ubuntu 
publishes 0.7.6

Bellow "multipath -r -v3" output from my env:

:/$ cat /etc/multipath.conf

devices { 
device { 
vendor "SolidFir" product "SSD SAN" detect_checker "no" 
} 
}

:/$ sudo multipath -r -v3 Jul 09 19:06:24 | loading
//lib/multipath/libchecktur.so checker Jul 09 19:06:24 | loading
//lib/multipath/libprioconst.so prioritizer Jul 09 19:06:24 | vda:
blacklisted, udev property missing Jul 09 19:06:24 | sda: udev property
ID_WWN whitelisted Jul 09 19:06:24 | sda: mask = 0x1f Jul 09 19:06:24 |
sda: dev_t = 8:0 Jul 09 19:06:24 | sda: size = 10485760 Jul 09 19:06:24
| sda: vendor = SolidFir Jul 09 19:06:24 | sda: product = SSD SAN Jul 09
19:06:24 | sda: rev = 0001 Jul 09 19:06:24 | sda: h:b:t:l = 2:0:0:0 Jul
09 19:06:24 | sda: tgt_node_name = iqn.2010-01.com.solidfire:xpsi.uuid-
7b8a927e-4dbc-4a2b-b47a-1bde324895eb.53 Jul 09 19:06:24 | sda: path
state = running Jul 09 19:06:24 | sda: 1018 cyl, 166 heads, 62
sectors/track, start at 0 Jul 09 19:06:24 | sda: serial =
7870736900000035f47acc0100000000 Jul 09 19:06:24 | sda: get_state Jul 09
19:06:24 | sda: detect_checker = no (setting: storage device
configuration) Jul 09 19:06:24 | sda: path_checker = tur (setting:
multipath internal) Jul 09 19:06:24 | sda: checker timeout = 30 s
(setting: multipath internal) Jul 09 19:06:24 | sda: tur state = up Jul
09 19:06:24 | sda: uid_attribute = ID_SERIAL (setting: multipath
internal) Jul 09 19:06:24 | sda: uid = 36f47acc1000000007870736900000035
(udev) Jul 09 19:06:24 | sda: detect_prio = yes (setting: multipath
internal) Jul 09 19:06:24 | sda: prio = const (setting: multipath
internal) Jul 09 19:06:24 | sda: prio args = "" (setting: multipath
internal) Jul 09 19:06:24 | sda: const prio = 1 Jul 09 19:06:24 | loop0:
blacklisted, udev property missing Jul 09 19:06:24 | loop1: blacklisted,
udev property missing Jul 09 19:06:24 | loop2: blacklisted, udev
property missing Jul 09 19:06:24 | loop3: blacklisted, udev property
missing Jul 09 19:06:24 | loop4: blacklisted, udev property missing Jul
09 19:06:24 | loop5: blacklisted, udev property missing Jul 09 19:06:24
| loop6: blacklisted, udev property missing Jul 09 19:06:24 | loop7:
blacklisted, udev property missing ===== paths list ===== uuid hcil dev
dev_t pri dm_st chk_st vend/prod 36f47acc1000000007870736900000035
2:0:0:0 sda 8:0 1 undef undef SolidFir, Jul 09 19:06:24 | libdevmapper
version 1.02.145 (2017-11-03) Jul 09 19:06:24 | DM multipath kernel
driver v1.13.0 Jul 09 19:06:24 | sda: udev property ID_WWN whitelisted
Jul 09 19:06:24 | sda: (SolidFir:SSD SAN) vendor/product blacklisted Jul
09 19:06:24 | sda: orphan path, wwid blacklisted Jul 09 19:06:24 | const
prioritizer refcount 1 Jul 09 19:06:24 | tur checker refcount 1 Jul 09
19:06:24 | unloading const prioritizer Jul 09 19:06:24 | unloading tur
checker

[1]https://git.opensvc.com/gitweb.cgi?p=multipath-
tools/.git;a=commit;h=84e16fbdb6648e685b65781d6ef0742469bd4b18

[2]https://git.opensvc.com/gitweb.cgi?p=multipath-
tools/.git;a=commit;h=d74a79f3590f3f28d34287b64c565fd5bf9705d0

[3]https://git.opensvc.com/gitweb.cgi?p=multipath-
tools/.git;a=commit;h=1f401b69e478b35d4b54b1980be67943c6d61d9f

[4]https://git.opensvc.com/gitweb.cgi?p=multipath-
tools/.git;a=commit;h=c6140952d1b682261c07cdb7138c944ee83d8809

[5]https://git.opensvc.com/gitweb.cgi?p=multipath-
tools/.git;a=commit;h=9d0e6bffbb3e490e92cf91444cfeb4177d540707

** Affects: multipath-tools (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1891202

Title:
  Multipathd hangs with long iscsi target names in Ubuntu 18.04

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1891202/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to