From 6cd22a42bbc13cac39e78428eecef79c98e8d24c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Wed, 25 Nov 2015 03:38:51 +0100 Subject: [PATCH] initramfs: use units of sectors in sfdisk call New version of sfdisk have different syntax for other units (suffixes beside the numbers, instead of global --unit). The only common unit is sector, so use that. Fixes QubesOS/qubes-issues#1427 --- dracut/full-dmroot/qubes_cow_setup.sh | 17 +++++++++-------- dracut/simple/init.sh | 18 ++++++++++-------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/dracut/full-dmroot/qubes_cow_setup.sh b/dracut/full-dmroot/qubes_cow_setup.sh index 78d3c2b..45acbe6 100644 --- a/dracut/full-dmroot/qubes_cow_setup.sh +++ b/dracut/full-dmroot/qubes_cow_setup.sh @@ -56,19 +56,20 @@ log_begin "Waiting for /dev/xvda* devices..." while ! [ -e /dev/xvda ]; do sleep 0.1; done log_end +SWAP_SIZE=$(( 1024 * 1024 * 2 )) # sectors, 1GB + if [ `cat /sys/block/xvda/ro` = 1 ] ; then log_begin "Qubes: Doing COW setup for AppVM..." while ! [ -e /dev/xvdc ]; do sleep 0.1; done - VOLATILE_SIZE=$(sfdisk -s /dev/xvdc) - ROOT_SIZE=$(sfdisk -s /dev/xvda) # kbytes - SWAP_SIZE=$(( 1024 * 1024 )) # kbytes - if [ $VOLATILE_SIZE -lt $(($ROOT_SIZE + $SWAP_SIZE)) ]; then - ROOT_SIZE=$(($VOLATILE_SIZE - $SWAP_SIZE)) + VOLATILE_SIZE=$(cat /sys/block/xvdc/size) # sectors + ROOT_SIZE=$(cat /sys/block/xvda/size) # sectors + if [ $VOLATILE_SIZE -lt $SWAP_SIZE ]; then + die "volatile.img smaller than 1GB, cannot continue" fi - sfdisk -q --unit B /dev/xvdc >/dev/null </dev/null </dev/null </dev/null <