It doesn't look like you dropped blockdev as you say in your comment. Diff comments:
> diff --git a/cloudinit/config/cc_disk_setup.py > b/cloudinit/config/cc_disk_setup.py > index e1505b3..7aacae4 100644 > --- a/cloudinit/config/cc_disk_setup.py > +++ b/cloudinit/config/cc_disk_setup.py > @@ -737,6 +737,21 @@ def exec_mkpart(table_type, device, layout): > return get_dyn_func("exec_mkpart_%s", table_type, device, layout) > > > +def udevadm_settle(): > + util.subp(['udevadm', 'settle']) > + > + > +def assert_and_settle_device(device): > + """Assert that device exists and settle so it is fully recognized.""" > + if not os.path.exists(device): > + udevadm_settle() > + if not os.path.exists(device): > + raise RuntimeError("Device %s did not exist and was not created " > + "with a udevamd settle." % device) > + > + udevadm_settle() Why is there another settle here? I guess we're saying, even if the path exists, we'll also just flush the event queue? > + > + > def mkpart(device, definition): > """ > Creates the partition table. -- https://code.launchpad.net/~smoser/cloud-init/+git/cloud-init/+merge/324639 Your team cloud-init commiters is requested to review the proposed merge of ~smoser/cloud-init:bug/1692093-sometimes-need-settle into cloud-init:master. _______________________________________________ Mailing list: https://launchpad.net/~cloud-init-dev Post to : cloud-init-dev@lists.launchpad.net Unsubscribe : https://launchpad.net/~cloud-init-dev More help : https://help.launchpad.net/ListHelp