[dm-devel] Multipath ID not equal to LUN scsi ID

Steffen Maier maier at linux.vnet.ibm.com
Mon Jul 10 13:02:33 UTC 2017


On 07/10/2017 11:58 AM, liuqing at huayun.com wrote:
> Dear list,
> We have a FC storage and using multipathd to manager the FC paths.
> I've met an issue in this environment. The following is how to recreate the issue.
> 
> =======
> 1. Map a LUN to host with LUN ID 0,
> 2. rescan fc_host, a new path will be found by multipath.
> 3. Unmap LUN 0.  path will failed as following.
> [root at localhost sys]# multipath -ll
> Jul 10 18:41:50 | sdp: couldn't get asymmetric access state
> Jul 10 18:41:50 | sdq: couldn't get asymmetric access state
> 36005076300810eadf800000000000156 dm-3 IBM,2145
> size=8.0G features='2 queue_if_no_path retain_attached_hw_handler' hwhandler='1 alua' wp=rw
> |-+- policy='service-time 0' prio=0 status=enabled
> | `- 2:0:0:0 sdp 8:240 failed faulty running
> `-+- policy='service-time 0' prio=0 status=enabled
>    `- 2:0:1:0 sdq 65:0  failed faulty running
> 4. Map another LUN which have different ID_SERIAL but with the same LUN ID(0).

Did you "rescan" the SCSI device via sysfs to let Linux know that this 
is now in fact a different device?

AFAIK, Linux decodes SCSI sense data for LUNs remapped on the storage 
target and emits a udev event, but I'm not aware of any default udev 
rule that would actually react. The kernel itself does not react other 
than creating the uevent.

> Multipath(check_path function) will set the paths up, tur checker will successfully test the LUN.
> [root at localhost sys]# /lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/mapper/36005076300810eadf800000000000156
> 36005076300810eadf800000000000155
>   I think this is not right, although I do not remove the device by 'echo 1> /sys/block/sdp/device/delete'. A multipath is identified by LUN scsi ID, in this situation the multipath
> ID is not equal to LUN scsi ID. And if I add the previous LUN back, the paths will also be added to that multipath id(36005076300810eadf800000000000156).
> 
> Any suggestion on how to make it create a new node in /dev with correct scsi ID? Thanks.

If you assume the old mapped volume would be gone, you could also flush 
the mpath map with the old WWID.

After the SCSI device rescan it should create a new map with the new WWID.

> 
> ===========
> [root at localhost sys]# cat /etc/multipath.conf
> defaults {
>      features "0"
>      no_path_retry           queue
>      getuid_callout "/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/%n"

IIRC, using an explicit getuid_callout has been deprecated in later 
releases of multipath tools and it would use builtin code to determine 
the necessary information, potentially even using inquiry data cached in 
the kernel (exported via sysfs).

If your toolchain is recent enough, would it work without this conf setting?

> }
> blacklist {
>      devnode "sd[a-m]"
> }

-- 
Mit freundlichen Grüßen / Kind regards
Steffen Maier

Linux on z Systems Development

IBM Deutschland Research & Development GmbH
Vorsitzende des Aufsichtsrats: Martina Koederitz
Geschaeftsfuehrung: Dirk Wittkopp
Sitz der Gesellschaft: Boeblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294





More information about the dm-devel mailing list