[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[PATCH] Don't create a PartitionDevice for devices that do not exist (#489122).



This is a strange situation to be in, but there appears to be a corner case
where parted cannot read the disk label despite there being a partition table
on the disk.  anaconda will prompt to create a new disk label.  This means
there's no partitions on the disk, but the list of partitions to probe still
has the old partition list.  So, we should just ignore devices that no longer
exist.
---
 storage/devices.py    |    7 +++----
 storage/devicetree.py |    4 ++++
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/storage/devices.py b/storage/devices.py
index ae1ad09..13d85b8 100644
--- a/storage/devices.py
+++ b/storage/devices.py
@@ -173,9 +173,7 @@ def PartitionDeviceFactory(*args, **kwargs):
         parents = kwargs["parents"]
         if isinstance(parents, Device):
             parents = [parents]
-        # we receive a list of parents.  look for the disk that contains the name
-        # if we dont find the name we will return PartitionDevice and let it raise
-        # the exception.
+        # we receive a list of parents.  look for the disk that contains the name.
         for root in roots:
             for parent in parents:
                 path = os.path.join(root,norm_name)
@@ -194,7 +192,8 @@ def PartitionDeviceFactory(*args, **kwargs):
                         return PartitionDevice(*args, **kwargs)
 
         # If we get here, we did not find anything.
-        return PartitionDevice(*args, **kwargs)
+        log.warning("unable to find parted device for %s" % norm_name)
+        return None
 
 class Device(object):
     """ A generic device.
diff --git a/storage/devicetree.py b/storage/devicetree.py
index 49f551c..15da568 100644
--- a/storage/devicetree.py
+++ b/storage/devicetree.py
@@ -880,6 +880,8 @@ class DeviceTree(object):
                                            minor=udev_device_get_minor(info), \
                                            exists=True, \
                                            parents=[disk])
+                    if not device:
+                        return
                     self._addDevice(device)
                     #self.ignoredDisks.append(name)
 
@@ -1012,6 +1014,8 @@ class DeviceTree(object):
                                                 minor=udev_device_get_minor(info),
                                                 exists=True,
                                                 parents=[disk])
+                if not device:
+                    return
                 self._addDevice(device)
 
         #
-- 
1.6.1.3


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]