Skip to content

Commit

Permalink
base-files: fix issues in nand sysupgrade
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Lanchon authored and dangowrt committed Apr 19, 2022
1 parent f8351d6 commit bfd9afc
Showing 1 changed file with 21 additions and 10 deletions.
31 changes: 21 additions & 10 deletions package/base-files/files/lib/upgrade/nand.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down Expand Up @@ -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
}
Expand Down

0 comments on commit bfd9afc

Please sign in to comment.