[PATCH] Fix handling of flexible specs in onpart for member devices. (#1004885)

David Lehman dlehman at redhat.com
Mon Sep 9 17:57:00 UTC 2013


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]
-- 
1.8.1.4



More information about the anaconda-patches mailing list