Re: Multipath ID not equal to LUN scsi ID

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07/10/2017 11:58 AM, liuqing@xxxxxxxxxx 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@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@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@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


--
dm-devel mailing list
dm-devel@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/dm-devel




[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux