From c57e6b24496c1a087d2a9d88663b9d3c6234fbcc Mon Sep 17 00:00:00 2001 From: Jason Andryuk Date: Fri, 12 Apr 2019 13:26:34 -0400 Subject: [PATCH 1/3] install-main: Return failure from create_lv When lvcreate fails we should bubble the error up to the caller. During development, I had a huge debugging dom0 which left only 24MB free in the volume group after being written to /dev/xenclient/root.new. This wasn't enough for the 143MB upgrade-compat image, so its LV could not be created. The error was not caught, so execution continued until install-bootloader eventually failed and failed the OTA. Signed-off-by: Jason Andryuk (cherry picked from commit a569cc6f42d2fb83cd8affd46bdc58e475c30a75) --- part2/stages/Functions/install-main | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/part2/stages/Functions/install-main b/part2/stages/Functions/install-main index ef30bd7..5d79d1b 100644 --- a/part2/stages/Functions/install-main +++ b/part2/stages/Functions/install-main @@ -30,7 +30,11 @@ create_lv() { fi lvcreate ${dfl_opts} --name ${name} ${opts} ${vg} + ret=$? + udevadm settle + + return $ret } mk_xc_lvm() From 9ce5db866dabcaf86bdbf7ec6d6085297a167ba3 Mon Sep 17 00:00:00 2001 From: Jason Andryuk Date: Fri, 12 Apr 2019 14:04:22 -0400 Subject: [PATCH 2/3] install-main: Add do_cmd to seal_system Use do_cmd so we have better insight into seal_system's operation. Signed-off-by: Jason Andryuk This is a stable-9 version of ec21df6d5729a259382 to include the compat upgrade case. --- part2/stages/Functions/install-main | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/part2/stages/Functions/install-main b/part2/stages/Functions/install-main index 5d79d1b..ff73bdd 100644 --- a/part2/stages/Functions/install-main +++ b/part2/stages/Functions/install-main @@ -480,15 +480,17 @@ seal_system() { if [ "$(uname -m)" = "i686" ]; then mount_upgrade_compat - /etc/init.d/trousers stop - chroot ${UPGRADE_MOUNT} /usr/sbin/seal-system -f -r ${ROOT_DEV} - /etc/init.d/trousers start + do_cmd /etc/init.d/trousers stop >&2 + do_cmd chroot ${UPGRADE_MOUNT} \ + /usr/sbin/seal-system -f -r ${ROOT_DEV} >&2 + do_cmd /etc/init.d/trousers start >&2 umount_upgrade_compat - do_cmd lvremove -f /dev/xenclient/upgradecompat + do_cmd lvremove -f /dev/xenclient/upgradecompat >&2 else - /etc/init.d/trousers stop - chroot ${DOM0_MOUNT} /usr/sbin/seal-system -f -r ${ROOT_DEV} - /etc/init.d/trousers start + do_cmd /etc/init.d/trousers stop >&2 + do_cmd chroot ${DOM0_MOUNT} \ + /usr/sbin/seal-system -f -r ${ROOT_DEV} >&2 + do_cmd /etc/init.d/trousers start >&2 fi do_umount_all ${DOM0_MOUNT} From 85c3240d423a85fcf4e513b3b610dcb392a64d2f Mon Sep 17 00:00:00 2001 From: Jason Andryuk Date: Fri, 12 Apr 2019 13:59:54 -0400 Subject: [PATCH 3/3] install-main: Report mount_upgrade_compat failures If we can't mount upgrade-compat, we should error our before trying to call additional commands. This better indicates where the error lies. Signed-off-by: Jason Andryuk --- part2/stages/Functions/install-main | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/part2/stages/Functions/install-main b/part2/stages/Functions/install-main index ff73bdd..d68bbc3 100644 --- a/part2/stages/Functions/install-main +++ b/part2/stages/Functions/install-main @@ -479,7 +479,7 @@ seal_system() { write_config_pcrs "${DOM0_MOUNT}" if [ "$(uname -m)" = "i686" ]; then - mount_upgrade_compat + mount_upgrade_compat || return 1 do_cmd /etc/init.d/trousers stop >&2 do_cmd chroot ${UPGRADE_MOUNT} \ /usr/sbin/seal-system -f -r ${ROOT_DEV} >&2 @@ -613,7 +613,7 @@ mount_config() install_bootloader_from_dom0fs() { if [ "$(uname -m)" = "i686" ]; then - mount_upgrade_compat + mount_upgrade_compat || return 1 do_cmd chroot ${UPGRADE_MOUNT} \ /usr/share/xenclient/install-bootloader "${LANGUAGE}" >&2 || { echo "Error installing the bootloader">&2