zed: Fix mpath autoreplace on Centos 7
A prior commit included a udev check for MPATH_DEVICE_READY to
determine if a path was multipath when doing an autoreplace:
f2f6c18
zed: Misc multipath autoreplace fixes
However, MPATH_DEVICE_READY is not provided by the older version of
udev that's on Centos 7 (it is on Centos 8).
This patch instead looks for 'mpath-' in the UUID, which works on
both Centos 7 and 8.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tony Hutter <hutter2@llnl.gov>
Closes #13222
This commit is contained in:
parent
90abfdf8ee
commit
2b8b89c6b3
|
@ -613,27 +613,24 @@ zfs_get_underlying_path(const char *dev_name)
|
|||
/*
|
||||
* A disk is considered a multipath whole disk when:
|
||||
* DEVNAME key value has "dm-"
|
||||
* MPATH_DEVICE_READY is present
|
||||
* DM_UUID key exists
|
||||
* DM_UUID key exists and starts with 'mpath-'
|
||||
* ID_PART_TABLE_TYPE key does not exist or is not gpt
|
||||
* ID_FS_LABEL key does not exist (disk isn't labeled)
|
||||
*/
|
||||
static boolean_t
|
||||
is_mpath_udev_sane(struct udev_device *dev)
|
||||
{
|
||||
const char *devname, *type, *uuid, *label, *mpath_ready;
|
||||
const char *devname, *type, *uuid, *label;
|
||||
|
||||
devname = udev_device_get_property_value(dev, "DEVNAME");
|
||||
type = udev_device_get_property_value(dev, "ID_PART_TABLE_TYPE");
|
||||
uuid = udev_device_get_property_value(dev, "DM_UUID");
|
||||
label = udev_device_get_property_value(dev, "ID_FS_LABEL");
|
||||
mpath_ready = udev_device_get_property_value(dev, "MPATH_DEVICE_READY");
|
||||
|
||||
if ((devname != NULL && strncmp(devname, "/dev/dm-", 8) == 0) &&
|
||||
((type == NULL) || (strcmp(type, "gpt") != 0)) &&
|
||||
(uuid != NULL) &&
|
||||
(label == NULL) &&
|
||||
(mpath_ready != NULL && strncmp(mpath_ready, "1", 1) == 0)) {
|
||||
((uuid != NULL) && (strncmp(uuid, "mpath-", 6) == 0)) &&
|
||||
(label == NULL)) {
|
||||
return (B_TRUE);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue