mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-18 10:04:20 +03:00
9738a02d3d
If using persistent filter and we're refreshing filters (just like we do for pvcreate now after commit 54685c20fc9dfb155a2e5bc9d8cf5f0aad944305), we can't rely on getting the primary device of the partition from the cache as such device could be already filtered by persistent filter and we get a device cache lookup failure for such device. For example: $ lvm dumpconfig --type diff devices { obtain_device_list_from_udev=0 } $lsblk /dev/sda NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 128M 0 disk `-sda1 8:1 0 127M 0 part $cat /etc/lvm/cache/.cache | grep sda "/dev/sda1", $pvcreate /dev/sda1 dev_is_mpath: failed to get device for 8:1 Physical volume "/dev/sda1" successfully created The problematic part of the code called dev_cache_get_by_devt to get the device for the device number supplied. Then the code used dev_name(dev) to get the name which is then used in check whether there's any mpath on top of this dev... This patch uses sysfs to get the base name for the partition instead, hence avoiding the device cache which is a correct approach here.