diff options
author | Chuanhong Guo <gch981213@gmail.com> | 2022-12-11 18:25:42 +0800 |
---|---|---|
committer | Chen Minqiang <ptpt52@gmail.com> | 2022-12-17 14:08:58 +0800 |
commit | c48e511fef37c42820c02119dab68c2b6cde3374 (patch) | |
tree | 47dcfd7049971a62cf007dba0dc50420d7537ddd /package | |
parent | d7876daf6552a9f39bd5e0bf50b554e9406ec275 (diff) | |
download | upstream-c48e511fef37c42820c02119dab68c2b6cde3374.tar.gz upstream-c48e511fef37c42820c02119dab68c2b6cde3374.tar.bz2 upstream-c48e511fef37c42820c02119dab68c2b6cde3374.zip |
base-files: split ubi attaching out of nand_upgrade_prepare_ubi
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>
Diffstat (limited to 'package')
-rw-r--r-- | package/base-files/files/lib/upgrade/nand.sh | 65 |
1 files changed, 38 insertions, 27 deletions
diff --git a/package/base-files/files/lib/upgrade/nand.sh b/package/base-files/files/lib/upgrade/nand.sh index 1019b9927c..258483fbf4 100644 --- a/package/base-files/files/lib/upgrade/nand.sh +++ b/package/base-files/files/lib/upgrade/nand.sh @@ -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" )" |