From e7a8fefa0b02a62282d1e6c17499b7620dc02abc Mon Sep 17 00:00:00 2001 From: Chris Alfonso Date: Thu, 15 Aug 2013 12:27:25 -0400 Subject: [PATCH] Use kpartx if partition device doesn't exist If the loop partition isn't created as a device by the kernel, go ahead and use kpartx to create the device. Change-Id: I53290b7724d0cb45a1fc9225ec096025db8978dd --- elements/vm/block-device.d/10-partition | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/elements/vm/block-device.d/10-partition b/elements/vm/block-device.d/10-partition index 8deb69905..036063285 100755 --- a/elements/vm/block-device.d/10-partition +++ b/elements/vm/block-device.d/10-partition @@ -15,4 +15,17 @@ EOF sudo partprobe $IMAGE_BLOCK_DEVICE -echo "IMAGE_BLOCK_DEVICE=${IMAGE_BLOCK_DEVICE}p1" +# To ensure no race conditions exist from calling partprobe +sudo udevadm settle + +# If the partition isn't under /dev/loop*p1, create it with kpartx +if [ ! -e "${IMAGE_BLOCK_DEVICE}p1" ]; then + sudo kpartx -asv $TMP_IMAGE_PATH + DM=${IMAGE_BLOCK_DEVICE/#\/dev/\/dev\/mapper} +fi + +if [ -n "$DM" ]; then + echo "IMAGE_BLOCK_DEVICE=${DM}p1" +else + echo "IMAGE_BLOCK_DEVICE=${IMAGE_BLOCK_DEVICE}p1" +fi