base-files: split ubi attaching out of nand_upgrade_prepare_ubi
authorChuanhong Guo <gch981213@gmail.com>
Sun, 11 Dec 2022 10:25:42 +0000 (18:25 +0800)
committerChen Minqiang <ptpt52@gmail.com>
Sat, 17 Dec 2022 06:08:58 +0000 (14:08 +0800)
split ubi reformat/attach into nand_attach_ubi in preparation
for reusing this code in other functions.

Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
package/base-files/files/lib/upgrade/nand.sh

index 1019b9927c0287d09f3a2ed45225436c38018eee..258483fbf4520cbd2b696430cee26de6fe0f4a2c 100644 (file)
@@ -146,6 +146,42 @@ nand_remove_ubiblock() {
        fi
 }
 
+nand_attach_ubi() {
+       local ubipart="$1"
+       local has_env="${2:-0}"
+
+       local mtdnum="$( find_mtd_index "$ubipart" )"
+       if [ ! "$mtdnum" ]; then
+               >&2 echo "cannot find ubi mtd partition $ubipart"
+               return 1
+       fi
+
+       local ubidev="$( nand_find_ubi "$ubipart" )"
+       if [ ! "$ubidev" ]; then
+               >&2 ubiattach -m "$mtdnum"
+               ubidev="$( nand_find_ubi "$ubipart" )"
+
+               if [ ! "$ubidev" ]; then
+                       >&2 ubiformat /dev/mtd$mtdnum -y
+                       >&2 ubiattach -m "$mtdnum"
+                       ubidev="$( nand_find_ubi "$ubipart" )"
+
+                       if [ ! "$ubidev" ]; then
+                               >&2 echo "cannot attach ubi mtd partition $ubipart"
+                               return 1
+                       fi
+
+                       if [ "$has_env" -gt 0 ]; then
+                               >&2 ubimkvol /dev/$ubidev -n 0 -N ubootenv -s 1MiB
+                               >&2 ubimkvol /dev/$ubidev -n 1 -N ubootenv2 -s 1MiB
+                       fi
+               fi
+       fi
+
+       echo "$ubidev"
+       return 0
+}
+
 nand_detach_ubi() {
        local ubipart="$1"
 
@@ -180,33 +216,8 @@ nand_upgrade_prepare_ubi() {
 
        [ -n "$rootfs_length" -o -n "$kernel_length" ] || return 1
 
-       local mtdnum="$( find_mtd_index "$CI_UBIPART" )"
-       if [ ! "$mtdnum" ]; then
-               echo "cannot find ubi mtd partition $CI_UBIPART"
-               return 1
-       fi
-
-       local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
-       if [ ! "$ubidev" ]; then
-               ubiattach -m "$mtdnum"
-               ubidev="$( nand_find_ubi "$CI_UBIPART" )"
-
-               if [ ! "$ubidev" ]; then
-                       ubiformat /dev/mtd$mtdnum -y
-                       ubiattach -m "$mtdnum"
-                       ubidev="$( nand_find_ubi "$CI_UBIPART" )"
-
-                       if [ ! "$ubidev" ]; then
-                               echo "cannot attach ubi mtd partition $CI_UBIPART"
-                               return 1
-                       fi
-
-                       if [ "$has_env" -gt 0 ]; then
-                               ubimkvol /dev/$ubidev -n 0 -N ubootenv -s 1MiB
-                               ubimkvol /dev/$ubidev -n 1 -N ubootenv2 -s 1MiB
-                       fi
-               fi
-       fi
+       local ubidev="$( nand_attach_ubi "$CI_UBIPART" "$has_env" )"
+       [ -n "$ubidev" ] || return 1
 
        local kern_ubivol="$( nand_find_volume $ubidev "$CI_KERNPART" )"
        local root_ubivol="$( nand_find_volume $ubidev "$CI_ROOTPART" )"