summaryrefslogtreecommitdiffstats
path: root/usr.bin/mkimg/vhd.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/mkimg/vhd.c')
-rw-r--r--usr.bin/mkimg/vhd.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/usr.bin/mkimg/vhd.c b/usr.bin/mkimg/vhd.c
index 6860c16..4040752 100644
--- a/usr.bin/mkimg/vhd.c
+++ b/usr.bin/mkimg/vhd.c
@@ -365,6 +365,11 @@ vhd_fix_resize(lba_t imgsz)
struct vhd_geom geom;
int64_t imagesz;
+ /*
+ * Round the image size to the pre-determined geometry that
+ * matches the image size. This circular dependency implies
+ * that we need to loop to handle boundary conditions.
+ */
imgsz *= secsz;
imagesz = imgsz;
while (1) {
@@ -375,6 +380,10 @@ vhd_fix_resize(lba_t imgsz)
break;
imagesz += geom.heads * geom.sectors * VHD_SECTOR_SIZE;
}
+ /*
+ * Azure demands that images are a whole number of megabytes.
+ */
+ imagesz = (imagesz + 0xfffffULL) & ~0xfffffULL;
return (image_set_size(imagesz / secsz));
}
OpenPOWER on IntegriCloud