[v2] Multiple loops shouldn't be fatal (#980510)

Brian C. Lane bcl at redhat.com
Wed Jan 7 17:45:34 UTC 2015


Backing files can have multiple loops associated with them without
problems. Raising an error here causes a crash when using an iso for
both stage2 and for the repo (eg. boot with
inst.repo=hd:/dev/sdb1:/path-to-dvd.iso).

Instead just use the first loop device in the list as the name.

Resolves: rhbz#980510
---
 blivet/devicelibs/loop.py | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/blivet/devicelibs/loop.py b/blivet/devicelibs/loop.py
index 0b374a2..661a32e 100644
--- a/blivet/devicelibs/loop.py
+++ b/blivet/devicelibs/loop.py
@@ -54,11 +54,17 @@ def get_backing_file(name):
 def get_loop_name(path):
     args = ["-j", path]
     buf = losetup(args, capture=True)
-    if len(buf.splitlines()) > 1:
-        # there should never be more than one loop device listed
-        raise LoopError("multiple loops associated with %s" % path)
 
-    name = os.path.basename(buf.split(":")[0])
+    entries = buf.splitlines()
+    if not entries:
+        raise LoopError("No loop associated with %s" % (path))
+
+    first_entry = entries[0]
+    if len(entries) > 1:
+        # If there are multiple loop devices use the first one
+        log.warning("multiple loops associated with %s. Using %s", path, first_entry)
+
+    name = os.path.basename(first_entry.split(":")[0])
     return name
 
 def loop_setup(path):
-- 
1.9.3



More information about the anaconda-patches mailing list