aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Golle <daniel@makrotopia.org>2022-02-17 15:10:00 +0000
committerDaniel Golle <daniel@makrotopia.org>2022-02-17 15:15:42 +0000
commit397de500896f3c7c4e2468c21521502392af4574 (patch)
tree054af1102430ef3b23c638bdb1bffcf210fbc566
parentadd7884cd09a828467a8ad88c7c5e719f2c77410 (diff)
downloadupstream-397de500896f3c7c4e2468c21521502392af4574.tar.gz
upstream-397de500896f3c7c4e2468c21521502392af4574.tar.bz2
upstream-397de500896f3c7c4e2468c21521502392af4574.zip
base-files: Make sure rootfs_data_max is considered
For sysupgrade on NAND/UBI devices there is the U-Boot environment variable rootfs_data_max which can be used to limit the size of the rootfs_data volume created on sysupgrade. This stopped working reliable with recent kernels, probably due to a race condition when reading the number of free erase blocks from sysfs just after removing a volume. Change the script to just try creating rootfs_data with the desired size and retry with maximum size in case that fails. Hence calculating the available size in the script can be dropped which works around the problem. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
-rw-r--r--package/base-files/files/lib/upgrade/nand.sh13
1 files changed, 5 insertions, 8 deletions
diff --git a/package/base-files/files/lib/upgrade/nand.sh b/package/base-files/files/lib/upgrade/nand.sh
index 9b29266479..19be9dd730 100644
--- a/package/base-files/files/lib/upgrade/nand.sh
+++ b/package/base-files/files/lib/upgrade/nand.sh
@@ -193,18 +193,15 @@ nand_upgrade_prepare_ubi() {
# create rootfs_data for non-ubifs rootfs
if [ "$rootfs_type" != "ubifs" ]; then
- local availeb=$(cat /sys/devices/virtual/ubi/$ubidev/avail_eraseblocks)
- local ebsize=$(cat /sys/devices/virtual/ubi/$ubidev/eraseblock_size)
- local avail_size=$((availeb * ebsize))
local rootfs_data_size_param="-m"
- if [ -n "$rootfs_data_max" ] &&
- [ "$rootfs_data_max" != "0" ] &&
- [ "$rootfs_data_max" -le "$avail_size" ]; then
+ if [ -n "$rootfs_data_max" ]; then
rootfs_data_size_param="-s $rootfs_data_max"
fi
if ! ubimkvol /dev/$ubidev -N rootfs_data $rootfs_data_size_param; then
- echo "cannot initialize rootfs_data volume"
- return 1
+ if ! ubimkvol /dev/$ubidev -N rootfs_data -m; then
+ echo "cannot initialize rootfs_data volume"
+ return 1
+ fi
fi
fi
sync