Hello List, I remember we discussed about the mpath filter before. It looks lvm2 developers didn't trust udev and wrote hard-coded scanning actions (see commit 3b0f9cec7e999, and below function dev_is_mpath_component()) to replace mpath+udev. But in SUSE env, we had tested/ran a long time and worked fine with setting up lvm2 under obtain_device_list_from_udev=1 & external_device_info_source = "udev". From SUSE env, below function at least should put line 702~705 to the beginning of this function. In the other word, consulting udev first, then back off to hard-coded checks. I don't know if the "udev+mpio+lvm2" combination in RedHat environments often encounters problems with abnormal startup. From SUSE env, it seems we do revert 3b0f9cec7e999 may got better result. 677 int dev_is_mpath_component(struct cmd_context *cmd, struct device *dev, dev_t *holder_devno) 678 { 679 struct dev_types *dt = cmd->dev_types; 680 int primary_result; 681 dev_t primary_dev; 682 683 /* 684 * multipath only uses SCSI or NVME devices 685 */ 686 if (!major_is_scsi_device(dt, MAJOR(dev->dev)) && !dev_is_nvme(dt, dev)) 687 return 0; 688 689 /* 690 * primary_result 2: dev is a partition, primary_dev is the whole device 691 * primary_result 1: dev is a whole device 692 */ 693 if (!(primary_result = dev_get_primary_dev(dt, dev, &primary_dev))) 694 return_0; 695 696 if (_dev_is_mpath_component_sysfs(cmd, dev, primary_result, primary_dev, holder_devno) == 1) 697 goto found; 698 699 if (_dev_in_wwid_file(cmd, dev, primary_result, primary_dev)) 700 goto found; 701 702 if (external_device_info_source() == DEV_EXT_UDEV) { 703 if (_dev_is_mpath_component_udev(dev) == 1) 704 goto found; 705 } 706 707 /* 708 * TODO: save the result of this function in dev->flags and use those 709 * flags on repeated calls to avoid repeating the work multiple times 710 * for the same device when there are partitions on the device. 711 */ 712 713 return 0; 714 found: 715 return 1; 716 } Thanks, Heming