getPhysicalDevices is supposed to only return disks or partitions, but currently it will also return for example luks devices, when these devices are members of a mdraid set. This patch rewrites getPhysicalDevices to make much more use of the new storage code, and to truely only return physical devices. --- booty/x86.py | 35 ++++++++++++++++++++--------------- 1 files changed, 20 insertions(+), 15 deletions(-) diff --git a/booty/x86.py b/booty/x86.py index 01ac93d..3544736 100644 --- a/booty/x86.py +++ b/booty/x86.py @@ -8,6 +8,9 @@ from flags import flags import checkbootloader import iutil +import logging +log = logging.getLogger("anaconda") + class x86BootloaderInfo(efiBootloaderInfo): def setPassword(self, val, isCrypted = 1): if not val: @@ -42,24 +45,26 @@ class x86BootloaderInfo(efiBootloaderInfo): # This finds a list of devices on which the given device name resides. # Accepted values for "device" are raid1 md devices (i.e. "md0"), # physical disks ("hda"), and real partitions on physical disks - # ("hda1"). Volume groups/logical volumes are not accepted. + # ("hda1"). Anything else gets ignored. dev = self.storage.devicetree.getDeviceByName(device) - path = dev.path[5:] - - if device in map (lambda x: x.name, self.storage.lvs + self.storage.vgs): - return [] - - if path.startswith("mapper/luks-"): - return [] - if dev.type == "mdarray": - bootable = 0 - parts = checkbootloader.getRaidDisks(device, self.storage, - raidLevel=1, stripPart=0) - parts.sort() - return parts + if dev.level != 1: + log.error("x86BootloaderInfo.getPhysicalDevices ignoring non " + "level 1 raid array %s" % dev.name) + return [] + devs = dev.parents + else: + devs = [ dev ] + + physicalDevices = [] + for dev in devs: + if dev in self.storage.disks or dev.type == "partition": + physicalDevices.append(dev.name) + else: + log.error("x86BootloaderInfo.getPhysicalDevices ignoring %s" % + dev.name) - return [device] + return physicalDevices def runGrubInstall(self, instRoot, bootDev, cmds, cfPath): if cfPath == "/": -- 1.7.0.1 _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list