aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRodrigo Balerdi <lanchon@gmail.com>2022-04-15 00:52:12 -0300
committerDaniel Golle <daniel@makrotopia.org>2022-04-19 16:28:25 +0100
commite3238a486f8102bdca3ea12091ef2425eabcd13e (patch)
treeae8c8e239e6ef02aff779c530f16248a9cdec6d3
parentf5ed603d0ce795bb8beb55db90b566836eef6514 (diff)
downloadupstream-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.sh34
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