Hi, On 01/12/2010 09:06 PM, David Lehman wrote:
If an unpartitionable device contains a disklabel we ignore any partitions on that device, but we want to show that the device does contain a partition table in UI. --- storage/devicetree.py | 29 ++++++++++++++++++++++++----- 1 files changed, 24 insertions(+), 5 deletions(-) diff --git a/storage/devicetree.py b/storage/devicetree.py index 82b7418..2c509b1 100644 --- a/storage/devicetree.py +++ b/storage/devicetree.py @@ -1081,7 +1081,11 @@ class DeviceTree(object): # Check that the disk has partitions. If it does not, we must have # reinitialized the disklabel. - if not getattr(disk.format, "partitions", None): + # + # Also ignore partitions on devices we do not support partitioning + # of, like logical volumes. + if not getattr(disk.format, "partitions", None) or \ + not disk.partitionable: log.debug("ignoring partition %s" % name) return @@ -1277,6 +1281,18 @@ class DeviceTree(object): log.warning("aborting disklabel handler for %s" % device.name) return + # special handling for unsupported partitioned devices + if not device.partitionable: + try: + format = getFormat("disklabel", + device=device.path, + exists=True) + except InvalidDiskLabelError: + pass + else: + device.format = format + return + # if the disk contains protected partitions we will not wipe the # disklabel even if clearpart --initlabel was specified if not self.clearPartDisks or device.name in self.clearPartDisks: @@ -1658,11 +1674,14 @@ class DeviceTree(object): # Now, if the device is a disk, see if there is a usable disklabel. # If not, see if the user would like to create one. # XXX ignore disklabels on multipath or biosraid member disks - if device.partitionable and not \ - (udev_device_is_biosraid(info) or - udev_device_is_multipath_member(info)): + if ((device.partitionable and not \ + (udev_device_is_biosraid(info) or + udev_device_is_multipath_member(info))) or + not device.partitionable):
It took me a while to parse this, I think this comes down to: if not udev_device_is_biosraid(info) and not udev_device_is_multipath_member(info):
self.handleUdevDiskLabelFormat(info, device) - if device.partitioned or self.isIgnored(info): + if device.partitioned or self.isIgnored(info) or \ + (not device.partitionable and + device.format.type == "disklabel"): # If the device has a disklabel, or the user chose not to # create one, we are finished with this device. Otherwise # it must have some non-disklabel formatting, in which case
Regards, Hans _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list