aboutsummaryrefslogtreecommitdiffstats
path: root/package/base-files/files
diff options
context:
space:
mode:
authorRodrigo Balerdi <lanchon@gmail.com>2022-04-15 10:11:52 -0300
committerDaniel Golle <daniel@makrotopia.org>2022-04-19 16:28:25 +0100
commitbfd9afc38dc8a5e158aea11f89c43980396cceff (patch)
tree4de2041116e8d3a34fdc08c251d5ae0497b4c56f /package/base-files/files
parentf8351d65bb32f07a6362b136d66153073f601acb (diff)
downloadupstream-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')
-rw-r--r--package/base-files/files/lib/upgrade/nand.sh31
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
}