Almost there, see below for my comment.
David Lehman wrote:
<snip, all good so far>
@@ -1152,18 +1170,38 @@ class DeviceTree(object):
rs.activate(mknod=True)
# Create the DMRaidArray
+ if self.zeroMbr:
+ cb = lambda: True
+ else:
+ cb = lambda: questionInitializeDisk(self.intf,
+ rs.name)
+
+ if not self.clearPartDisks or \
+ rs.name in self.clearPartDisks:
+ # we'll need the array's sysfs path below
+ dm_node = dm.dm_node_from_name(rs.name)
+ _sysfs_path = "/class/block/%s" % dm_node
+
+ # if the disk contains protected partitions
+ # we will not wipe the disklabel even if
+ # clearpart --initlabel was specified
+ initlabel = self.reinitializeDisks
+ for protected in self.protectedPartitions:
+ _p = "/sys/%s/%s" % (_sysfs_path, protected)
+ if os.path.exists(os.path.normpath(_p)):
+ initlabel = False
+ break
This won't work with dm(raid) partitions as their block sysfs entries are not a subdir
of the containing "disk", they are a (partial) linear device mapping of their containing
disk, so they themselves have a sysfs path of /sys/class/block/dm-# too, just like
their containing disk (but with a higher #)
All I can come up with here, is that you check if the protectedPartition name ends with p#,
and if so strip p#, and then see if what remains matches the name of the dmraid array.
See udev.py: udev_device_get_dmraid_partition_disk(), but that needs udev info for
the partition which you do not have, although we could change its argument, as all it really
needs is the name.
Regards,
Hans
_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list