Skip to content

Commit

Permalink
base-files: more robust sysupgrade on NAND
Browse files Browse the repository at this point in the history
Make sure sysupgrade on NAND also works in case of UBI volumes having
index >9. While at it, also make sure UBI device is detected and abort
in case it isn't. Use Shell built-in shorthand ':' instead of 'true'.

Fixes openwrt#9708
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  • Loading branch information
dangowrt committed Apr 13, 2022
1 parent 435d7a0 commit 0dbca1b
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions package/base-files/files/lib/upgrade/nand.sh
Expand Up @@ -143,6 +143,7 @@ nand_upgrade_prepare_ubi() {
ubiattach -m "$mtdnum"
sync
ubidev="$( nand_find_ubi "$CI_UBIPART" )"
[ ! "$ubidev" ] && return 1
[ "$has_env" -gt 0 ] && {
ubimkvol /dev/$ubidev -n 0 -N ubootenv -s 1MiB
ubimkvol /dev/$ubidev -n 1 -N ubootenv2 -s 1MiB
Expand All @@ -154,8 +155,13 @@ nand_upgrade_prepare_ubi() {
local data_ubivol="$( nand_find_volume $ubidev rootfs_data )"

local ubiblk ubiblkvol
for ubiblk in /dev/ubiblock*_? ; do
for ubiblk in /dev/ubiblock${ubidev:3}_* ; do
[ -e "$ubiblk" ] || continue
case "$ubiblk" in
/dev/ubiblock*_*p*)
continue
;;
esac
echo "removing ubiblock${ubiblk:13}"
ubiblkvol=ubi${ubiblk:13}
if ! ubiblock -r /dev/$ubiblkvol; then
Expand All @@ -165,9 +171,9 @@ nand_upgrade_prepare_ubi() {
done

# kill volumes
[ "$kern_ubivol" ] && ubirmvol /dev/$ubidev -N $CI_KERNPART || true
[ "$root_ubivol" -a "$root_ubivol" != "$kern_ubivol" ] && ubirmvol /dev/$ubidev -N $CI_ROOTPART || true
[ "$data_ubivol" ] && ubirmvol /dev/$ubidev -N rootfs_data || true
[ "$kern_ubivol" ] && ubirmvol /dev/$ubidev -N $CI_KERNPART || :
[ "$root_ubivol" -a "$root_ubivol" != "$kern_ubivol" ] && ubirmvol /dev/$ubidev -N $CI_ROOTPART || :
[ "$data_ubivol" ] && ubirmvol /dev/$ubidev -N rootfs_data || :

# update kernel
if [ -n "$kernel_length" ]; then
Expand Down

0 comments on commit 0dbca1b

Please sign in to comment.