← Back to team overview

curtin-dev team mailing list archive

[Merge] ~dbungert/curtin:image-writer into curtin:master

 

Dan Bungert has proposed merging ~dbungert/curtin:image-writer into curtin:master with ~dbungert/curtin:old-series-extended as a prerequisite.

Commit message:
fix issues around handling raw images on old series

Requested reviews:
  curtin developers (curtin-dev)

For more details, see:
https://code.launchpad.net/~dbungert/curtin/+git/curtin/+merge/443381
-- 
Your team curtin developers is requested to review the proposed merge of ~dbungert/curtin:image-writer into curtin:master.
diff --git a/curtin/block/__init__.py b/curtin/block/__init__.py
index 0e13a0d..86251d9 100644
--- a/curtin/block/__init__.py
+++ b/curtin/block/__init__.py
@@ -734,6 +734,7 @@ def get_root_device(dev, paths=None):
     LOG.debug('Searching for filesystem on %s containing one of: %s',
               dev, paths)
     partitions = get_pardevs_on_blockdevs(dev)
+    LOG.debug('Known partitions %s', list(partitions.keys()))
     target = None
     tmp_mount = tempfile.mkdtemp()
     for i in partitions:
diff --git a/curtin/commands/block_meta.py b/curtin/commands/block_meta.py
index 71035f9..24ceaf4 100644
--- a/curtin/commands/block_meta.py
+++ b/curtin/commands/block_meta.py
@@ -159,13 +159,17 @@ def write_image_to_disk(source, dev):
                     '--', source['uri'], devnode])
     util.subp(['partprobe', devnode])
 
-    udevadm_trigger([devnode])
-    try:
-        lvm.activate_volgroups()
-    except util.ProcessExecutionError:
-        # partial vg may not come up due to missing members, that's OK
-        pass
-    udevadm_settle()
+    for i in range(3):
+        # For images that contain block devices of interest to device mapper, a
+        # single round can sometimes not be enough to discover the mapped
+        # devices.  So let's have an ugly retry loop.
+        udevadm_trigger([devnode])
+        try:
+            lvm.activate_volgroups()
+        except util.ProcessExecutionError:
+            # partial vg may not come up due to missing members, that's OK
+            pass
+        udevadm_settle()
 
     # Images from MAAS have well-known/required paths present
     # on the rootfs partition.  Use these values to select the
diff --git a/tools/vmtest-create-static-images b/tools/vmtest-create-static-images
index d236608..3c20ef3 100755
--- a/tools/vmtest-create-static-images
+++ b/tools/vmtest-create-static-images
@@ -34,7 +34,8 @@ trap cleanup EXIT
         mkpart primary 0% 25% \
         mkpart primary 25% 100% \
         set 2 lvm on
-    sudo udevadm trigger --settle "${loopdev}"
+    sudo udevadm trigger "${loopdev}"
+    sudo udevadm settle
 
     # create LVM volumes
     sudo pvcreate "${loopdev}"p2

Follow ups