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:
On Tue, Dec 18, 2012 at 01:39:27PM -0600, David Lehman wrote:
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(-)
ACK
anaconda-patches@lists.fedorahosted.org