[PATCH 2/3] Use devicetree to resolve device specs in kickstart. (#1022206)

David Lehman dlehman at redhat.com
Wed Oct 23 18:57:22 UTC 2013


Previously we were trying udev_resolve_devspec first, which meant we
were preferring devices that exist on disk over the currently projected
set of devices according to the devicetree. Trust the devicetree.
---
 pyanaconda/kickstart.py | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py
index b2b2116..524a561 100644
--- a/pyanaconda/kickstart.py
+++ b/pyanaconda/kickstart.py
@@ -333,12 +333,11 @@ class BTRFSData(commands.btrfs.F17_BTRFSData):
 
         # Get a list of all the devices that make up this volume.
         for member in self.devices:
-            # if using --onpart, use original device
-            member_name = ksdata.onPart.get(member, member)
-            if member_name:
-                dev = devicetree.getDeviceByName(udev.udev_resolve_devspec(member_name)) or lookupAlias(devicetree, member)
+            dev = devicetree.resolveDevice(member)
             if not dev:
-                dev = devicetree.resolveDevice(member)
+                # if using --onpart, use original device
+                member_name = ksdata.onPart.get(member, member)
+                dev = devicetree.resolveDevice(member_name or lookupAlias(devicetree, member))
 
             if dev and dev.format.type == "luks":
                 try:
@@ -1178,9 +1177,11 @@ class RaidData(commands.raid.F18_RaidData):
 
         # Get a list of all the RAID members.
         for member in self.members:
-            # if member is using --onpart, use original device
-            mem = ksdata.onPart.get(member, member)
-            dev = devicetree.getDeviceByName(udev.udev_resolve_devspec(mem)) or lookupAlias(devicetree, mem)
+            dev = devicetree.resolveDevice(member)
+            if not dev:
+                # if member is using --onpart, use original device
+                mem = ksdata.onPart.get(member, member)
+                dev = devicetree.resolveDevice(mem or lookupAlias(devicetree, member))
             if dev and dev.format.type == "luks":
                 try:
                     dev = devicetree.getChildren(dev)[0]
@@ -1401,9 +1402,11 @@ class VolGroupData(commands.volgroup.FC16_VolGroupData):
 
         # Get a list of all the physical volume devices that make up this VG.
         for pv in self.physvols:
-            # if pv is using --onpart, use original device
-            pv = ksdata.onPart.get(pv, pv)
-            dev = devicetree.getDeviceByName(udev.udev_resolve_devspec(pv)) or lookupAlias(devicetree, pv)
+            dev = devicetree.resolveDevice(pv)
+            if not dev:
+                # if pv is using --onpart, use original device
+                pv_name = ksdata.onPart.get(pv, pv)
+                dev = devicetree.resolveDevice(pv_name 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