New patch, taking into account David's comments about the number of fields in crypttab entries. The newline is not an issue since split is in fact getting rid of it. As for the shoddy substring code in readFstab... While I agree with you in principal, I don't know if it's worthwhile at this point to go through and fix it. diff --git a/fsset.py b/fsset.py index 40eb0d2..c7972ec 100644 --- a/fsset.py +++ b/fsset.py @@ -2695,6 +2695,23 @@ def makeDevice(dev): device = PartitionDevice(dev, encryption=cryptoDev) return device +def findBackingDevInCrypttab(mappingName): + backingDev = None + try: + lines = open("/mnt/sysimage/etc/crypttab").readlines() + except IOError, e: + pass + else: + for line in lines: + fields = line.split() + if len(fields) < 2: + continue + if fields[0] == mappingName: + backingDev = fields[1] + break + + return backingDev + # XXX fix RAID def readFstab (anaconda): def createMapping(dict): @@ -2833,6 +2850,39 @@ def readFstab (anaconda): if loopIndex.has_key(device): (dev, fs) = loopIndex[device] device = LoopbackDevice(dev, fs) + elif fields[0].startswith("/dev/mapper/luks-"): + backingDev = findBackingDevInCrypttab(fields[0][12:]) + log.debug("device %s has backing device %s" % (fields[0], + backingDev)) + if backingDev is None: + log.error("unable to resolve backing device for %s" % fields[0] + continue + elif backingDev.startswith('LABEL='): + label = backingDev[6:] + if label in labelDupes: + showError(label, intf) + + if labelToDevice.has_key(label): + device = makeDevice(labelToDevice[label]) + else: + log.warning ("crypttab file has LABEL=%s, but this label " + "could not be found on any file system", label + # bad luck, skip this entry. + continue + elif backingDev.startswith('UUID='): + uuid = backingDev[5:] + if uuid in uuidDupes: + showError(uuid, intf) + + if uuidToDevice.has_key(uuid): + device = makeDevice(uuidToDevice[uuid]) + else: + log.warning ("crypttab file has UUID=%s, but this UUID" + "could not be found on any file system", uuid) + # bad luck, skip this entry. + continue + else: + device = makeDevice(backingDev[5:]) elif fields[0].startswith('/dev/'): # Older installs may have lines starting with things like /dev/proc # so watch out for that on upgrade. Dave _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list