diff options
author | Rodrigo Balerdi <lanchon@gmail.com> | 2022-04-15 00:52:12 -0300 |
---|---|---|
committer | Daniel Golle <daniel@makrotopia.org> | 2022-04-19 16:28:25 +0100 |
commit | e3238a486f8102bdca3ea12091ef2425eabcd13e (patch) | |
tree | ae8c8e239e6ef02aff779c530f16248a9cdec6d3 | |
parent | f5ed603d0ce795bb8beb55db90b566836eef6514 (diff) | |
download | upstream-e3238a486f8102bdca3ea12091ef2425eabcd13e.tar.gz upstream-e3238a486f8102bdca3ea12091ef2425eabcd13e.tar.bz2 upstream-e3238a486f8102bdca3ea12091ef2425eabcd13e.zip |
base-files: improve sysupgrade ubiblock handling
Only remove ubiblock devices required for nand sysupgrade.
Signed-off-by: Rodrigo Balerdi <lanchon@gmail.com>
-rw-r--r-- | package/base-files/files/lib/upgrade/nand.sh | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/package/base-files/files/lib/upgrade/nand.sh b/package/base-files/files/lib/upgrade/nand.sh index 8f008d6a06..ec1335cb2c 100644 --- a/package/base-files/files/lib/upgrade/nand.sh +++ b/package/base-files/files/lib/upgrade/nand.sh @@ -114,6 +114,18 @@ nand_restore_config() { rmdir /tmp/new_root } +nand_remove_ubiblock() { + local ubivol=$1 + local ubiblk=ubiblock${ubivol:3} + if [ -e /dev/$ubiblk ]; then + echo "removing $ubiblk" + if ! ubiblock -r /dev/$ubivol; then + echo "cannot remove $ubiblk" + return 1 + fi + fi +} + nand_upgrade_prepare_ubi() { local rootfs_length="$1" local rootfs_type="$2" @@ -158,26 +170,16 @@ nand_upgrade_prepare_ubi() { local kern_ubivol="$( nand_find_volume $ubidev $CI_KERNPART )" local root_ubivol="$( nand_find_volume $ubidev $CI_ROOTPART )" local data_ubivol="$( nand_find_volume $ubidev rootfs_data )" + [ "$root_ubivol" = "$kern_ubivol" ] && root_ubivol= - local ubiblk ubiblkvol - 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 - echo "cannot remove $ubiblk" - return 1 - fi - done + # remove ubiblocks + [ "$kern_ubivol" ] && { nand_remove_ubiblock $kern_ubivol || return 1; } + [ "$root_ubivol" ] && { nand_remove_ubiblock $root_ubivol || return 1; } + [ "$data_ubivol" ] && { nand_remove_ubiblock $data_ubivol || return 1; } # kill volumes [ "$kern_ubivol" ] && ubirmvol /dev/$ubidev -N $CI_KERNPART || : - [ "$root_ubivol" -a "$root_ubivol" != "$kern_ubivol" ] && ubirmvol /dev/$ubidev -N $CI_ROOTPART || : + [ "$root_ubivol" ] && ubirmvol /dev/$ubidev -N $CI_ROOTPART || : [ "$data_ubivol" ] && ubirmvol /dev/$ubidev -N rootfs_data || : # update kernel |