[PATCH][rhel6-branch] Fix handling of nompath option.

David Lehman dlehman at redhat.com
Tue Dec 18 19:39:27 UTC 2012


Don't run identifyMultipaths if nompath was passed, for both interactive
and kickstart installs.

Related: rhbz#821042
---
 kickstart.py          |   12 ++++++------
 storage/devicetree.py |    6 ++++--
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/kickstart.py b/kickstart.py
index 7cc8f22..e4b960a 100644
--- a/kickstart.py
+++ b/kickstart.py
@@ -22,6 +22,7 @@ from storage.deviceaction import *
 from storage.devices import LUKSDevice
 from storage.devicelibs.lvm import getPossiblePhysicalExtents
 from storage.devicelibs.mpath import MultipathConfigWriter, identifyMultipaths
+from storage.devicelibs.mpath import writeMultipathConf
 from storage.formats import getFormat
 from storage.partitioning import clearPartitions
 from storage.partitioning import shouldClear
@@ -63,7 +64,7 @@ from anaconda_log import logger, logLevelMap, setHandlersLevel
 
 # deviceMatches is called early, before any multipaths can possibly be coalesced
 # so it needs to know about them in some additional way
-multipaths = None
+multipaths = []
 
 class AnacondaKSScript(Script):
     def run(self, chroot, serial, intf = None):
@@ -184,11 +185,10 @@ def getEscrowCertificate(anaconda, url):
 def detect_multipaths():
     global multipaths
     mcw = MultipathConfigWriter()
-    cfg = mcw.write(friendly_names=True)
-    with open("/etc/multipath.conf", "w+") as mpath_cfg:
-        mpath_cfg.write(cfg)
-    devices = udev_get_block_devices()
-    (singles, multipaths, partitions) = identifyMultipaths(devices)
+    writeMultipathConf(writer=mcw, friendly_names=True)
+    if os.access("/etc/multipath.conf", os.R_OK):
+        devices = udev_get_block_devices()
+        (singles, multipaths, partitions) = identifyMultipaths(devices)
 
 def deviceMatches(spec):
     full_spec = spec
diff --git a/storage/devicetree.py b/storage/devicetree.py
index 6e3c6b2..ba85aab 100644
--- a/storage/devicetree.py
+++ b/storage/devicetree.py
@@ -2099,8 +2099,10 @@ class DeviceTree(object):
                                             friendly_names=self.mpathFriendlyNames)
 
         devices = udev_get_block_devices()
-        (singles, mpaths, partitions) = devicelibs.mpath.identifyMultipaths(devices)
-        devices = singles + reduce(list.__add__, mpaths, []) + partitions
+        if os.access("/etc/multipath.conf", os.R_OK):
+            (singles, mpaths, partitions) = devicelibs.mpath.identifyMultipaths(devices)
+            devices = singles + reduce(list.__add__, mpaths, []) + partitions
+
         # remember all the devices idenitfyMultipaths() gave us at this point
         old_devices = {}
         for dev in devices:
-- 
1.7.7.6



More information about the anaconda-patches mailing list