With a kickstart install, with "clearpart --label", we will end up scanning pre-existing partitions after clearing the label. This leads to the backtrace as seen in #527785 and #526517. addUdevPartitionDevice() has special handling for this case, instead of copy and pasting this, this patch modifies addUdevPartitionDevice() so that it can be used for dmraid and multipath partitions too. --- storage/devicetree.py | 23 +++++++---------------- 1 files changed, 7 insertions(+), 16 deletions(-) diff --git a/storage/devicetree.py b/storage/devicetree.py index cce8013..6df57cf 100644 --- a/storage/devicetree.py +++ b/storage/devicetree.py @@ -1032,21 +1032,11 @@ class DeviceTree(object): if udev_device_is_multipath_partition(info, self): diskname = udev_device_get_multipath_partition_disk(info) disk = self.getDeviceByName(diskname) - device = PartitionDevice(name, sysfsPath=sysfs_path, - major=udev_device_get_major(info), - minor=udev_device_get_minor(info), - exists=True, parents=[disk]) + return self.addUdevPartitionDevice(info, disk=disk) elif udev_device_is_dmraid_partition(info, self): diskname = udev_device_get_dmraid_partition_disk(info) disk = self.getDeviceByName(diskname) - device = PartitionDevice(name, sysfsPath=sysfs_path, - major=udev_device_get_major(info), - minor=udev_device_get_minor(info), - exists=True, parents=[disk]) - if not device is None: - # DWL FIXME: call self.addUdevPartitionDevice here instead - self._addDevice(device) - + return self.addUdevPartitionDevice(info, disk=disk) # if we get here, we found all of the slave devices and # something must be wrong -- if all of the slaves are in @@ -1114,16 +1104,17 @@ class DeviceTree(object): return device - def addUdevPartitionDevice(self, info): + def addUdevPartitionDevice(self, info, disk=None): name = udev_device_get_name(info) log_method_call(self, name=name) uuid = udev_device_get_uuid(info) sysfs_path = udev_device_get_sysfs_path(info) device = None - disk_name = os.path.basename(os.path.dirname(sysfs_path)) - disk_name = disk_name.replace('!','/') - disk = self.getDeviceByName(disk_name) + if disk is None: + disk_name = os.path.basename(os.path.dirname(sysfs_path)) + disk_name = disk_name.replace('!','/') + disk = self.getDeviceByName(disk_name) if disk is None: # create a device instance for the disk -- 1.6.5.rc2 _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list