diff options
author | Rodrigo Balerdi <lanchon@gmail.com> | 2022-04-15 10:11:52 -0300 |
---|---|---|
committer | Daniel Golle <daniel@makrotopia.org> | 2022-04-19 16:28:25 +0100 |
commit | bfd9afc38dc8a5e158aea11f89c43980396cceff (patch) | |
tree | 4de2041116e8d3a34fdc08c251d5ae0497b4c56f /package/base-files/files/lib | |
parent | f8351d65bb32f07a6362b136d66153073f601acb (diff) | |
download | upstream-bfd9afc38dc8a5e158aea11f89c43980396cceff.tar.gz upstream-bfd9afc38dc8a5e158aea11f89c43980396cceff.tar.bz2 upstream-bfd9afc38dc8a5e158aea11f89c43980396cceff.zip |
base-files: fix issues in nand sysupgrade
Fix issues while retaining configuration during nand sysupgrade:
- abort configuration saving if data partition is not found
- generate diagnostics if saving fails (eg, because of lack of space)
- do not output "sysupgrade successful" in case of errors
Signed-off-by: Rodrigo Balerdi <lanchon@gmail.com>
Diffstat (limited to 'package/base-files/files/lib')
-rw-r--r-- | package/base-files/files/lib/upgrade/nand.sh | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/package/base-files/files/lib/upgrade/nand.sh b/package/base-files/files/lib/upgrade/nand.sh index f941718446..d85b2aa241 100644 --- a/package/base-files/files/lib/upgrade/nand.sh +++ b/package/base-files/files/lib/upgrade/nand.sh @@ -97,21 +97,33 @@ identify_tar() { } nand_restore_config() { - sync local ubidev=$( nand_find_ubi "$CI_UBIPART" ) local ubivol="$( nand_find_volume $ubidev rootfs_data )" - [ ! "$ubivol" ] && + if [ ! "$ubivol" ]; then ubivol="$( nand_find_volume $ubidev "$CI_ROOTPART" )" + if [ ! "$ubivol" ]; then + echo "cannot find ubifs data volume" + return 1 + fi + fi mkdir /tmp/new_root if ! mount -t ubifs /dev/$ubivol /tmp/new_root; then - echo "mounting ubifs $ubivol failed" + echo "cannot mount ubifs volume $ubivol" rmdir /tmp/new_root return 1 fi - mv "$1" "/tmp/new_root/$BACKUP_FILE" - umount /tmp/new_root - sync + if mv "$1" "/tmp/new_root/$BACKUP_FILE"; then + if umount /tmp/new_root; then + echo "configuration saved" + rmdir /tmp/new_root + return 0 + fi + else + umount /tmp/new_root + fi + echo "could not save configuration to ubifs volume $ubivol" rmdir /tmp/new_root + return 1 } nand_remove_ubiblock() { @@ -223,10 +235,9 @@ nand_upgrade_prepare_ubi() { nand_do_upgrade_success() { local conf_tar="/tmp/sysupgrade.tgz" - - sync - [ -f "$conf_tar" ] && nand_restore_config "$conf_tar" - echo "sysupgrade successful" + if { [ ! -f "$conf_tar" ] || nand_restore_config "$conf_tar"; } && sync; then + echo "sysupgrade successful" + fi umount -a reboot -f } |