Short version: don't assume onPart identifier is a name/path.
Longer version: If an existing pv was specified using --onpart=UUID=<uuid> the immediate onpart resolution worked, but the volgroup would then fail to resolve the pv.xxx to a device because it assumed the onpart data was a name. --- pyanaconda/kickstart.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py index e3f8895..d6baaaa 100644 --- a/pyanaconda/kickstart.py +++ b/pyanaconda/kickstart.py @@ -314,7 +314,7 @@ class BTRFSData(commands.btrfs.F17_BTRFSData): # if using --onpart, use original device member_name = ksdata.onPart.get(member, member) if member_name: - dev = devicetree.getDeviceByName(member_name) or lookupAlias(devicetree, member) + dev = devicetree.getDeviceByName(udev.udev_resolve_devspec(member_name)) or lookupAlias(devicetree, member) if not dev: dev = devicetree.resolveDevice(member)
@@ -1131,7 +1131,7 @@ class RaidData(commands.raid.F18_RaidData): for member in self.members: # if member is using --onpart, use original device mem = ksdata.onPart.get(member, member) - dev = devicetree.getDeviceByName(mem) or lookupAlias(devicetree, mem) + dev = devicetree.getDeviceByName(udev.udev_resolve_devspec(mem)) or lookupAlias(devicetree, mem) if dev and dev.format.type == "luks": try: dev = devicetree.getChildren(dev)[0] @@ -1350,7 +1350,7 @@ class VolGroupData(commands.volgroup.FC16_VolGroupData): for pv in self.physvols: # if pv is using --onpart, use original device pv = ksdata.onPart.get(pv, pv) - dev = devicetree.getDeviceByName(pv) or lookupAlias(devicetree, pv) + dev = devicetree.getDeviceByName(udev.udev_resolve_devspec(pv)) or lookupAlias(devicetree, pv) if dev and dev.format.type == "luks": try: dev = devicetree.getChildren(dev)[0]
On Mon, 2013-09-09 at 12:57 -0500, David Lehman wrote:
Short version: don't assume onPart identifier is a name/path.
Longer version: If an existing pv was specified using --onpart=UUID=<uuid> the immediate onpart resolution worked, but the volgroup would then fail to resolve the pv.xxx to a device because it assumed the onpart data was a name.
pyanaconda/kickstart.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py index e3f8895..d6baaaa 100644 --- a/pyanaconda/kickstart.py +++ b/pyanaconda/kickstart.py @@ -314,7 +314,7 @@ class BTRFSData(commands.btrfs.F17_BTRFSData): # if using --onpart, use original device member_name = ksdata.onPart.get(member, member) if member_name:
dev = devicetree.getDeviceByName(member_name) or lookupAlias(devicetree, member)
dev = devicetree.getDeviceByName(udev.udev_resolve_devspec(member_name)) or lookupAlias(devicetree, member) if not dev: dev = devicetree.resolveDevice(member)
@@ -1131,7 +1131,7 @@ class RaidData(commands.raid.F18_RaidData): for member in self.members: # if member is using --onpart, use original device mem = ksdata.onPart.get(member, member)
dev = devicetree.getDeviceByName(mem) or lookupAlias(devicetree, mem)
dev = devicetree.getDeviceByName(udev.udev_resolve_devspec(mem)) or lookupAlias(devicetree, mem) if dev and dev.format.type == "luks": try: dev = devicetree.getChildren(dev)[0]
@@ -1350,7 +1350,7 @@ class VolGroupData(commands.volgroup.FC16_VolGroupData): for pv in self.physvols: # if pv is using --onpart, use original device pv = ksdata.onPart.get(pv, pv)
dev = devicetree.getDeviceByName(pv) or lookupAlias(devicetree, pv)
dev = devicetree.getDeviceByName(udev.udev_resolve_devspec(pv)) or lookupAlias(devicetree, pv) if dev and dev.format.type == "luks": try: dev = devicetree.getChildren(dev)[0]
ACK.
anaconda-patches@lists.fedorahosted.org