mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-29 09:32:34 +00:00
75 lines
2.8 KiB
Diff
75 lines
2.8 KiB
Diff
From 7ed003d57f1c5273fecddabcdc7bd6845c3854a0 Mon Sep 17 00:00:00 2001
|
|
From: John Crispin <john@phrozen.org>
|
|
Date: Sat, 20 Feb 2021 08:36:43 +0100
|
|
Subject: [PATCH 05/27] sysupgrade-nand: allow limiting rootfs_data by setting
|
|
env variable
|
|
|
|
Check if firmware environment variable 'rootfs_data_max' exists and is
|
|
set to a numerical value greater than 0. If so, limit rootfs_data
|
|
volume to that size instead of using the maximum available size.
|
|
|
|
This is useful on devices with lots of flash where users may want to
|
|
have eg. a volume for persistent logs and statistics or for external
|
|
applications/containers. Persistence on rootfs overlay is limited by
|
|
the size of memory available during the sysugprade process as that
|
|
data needs to be copied to RAM while the volume is being recreated
|
|
during sysupgrade. Hence it is unsuitable for keeping larger amounts
|
|
of data accross upgrade which makes additional volume(s) for
|
|
application data desirable.
|
|
|
|
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
---
|
|
package/base-files/files/lib/upgrade/nand.sh | 20 ++++++++++++++++----
|
|
1 file changed, 16 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/package/base-files/files/lib/upgrade/nand.sh b/package/base-files/files/lib/upgrade/nand.sh
|
|
index 5bc9ff83f9..e335d940ed 100644
|
|
--- a/package/base-files/files/lib/upgrade/nand.sh
|
|
+++ b/package/base-files/files/lib/upgrade/nand.sh
|
|
@@ -117,6 +117,9 @@ nand_restore_config() {
|
|
nand_upgrade_prepare_ubi() {
|
|
local rootfs_length="$1"
|
|
local rootfs_type="$2"
|
|
+ local rootfs_data_max="$(fw_printenv -n rootfs_data_max 2>/dev/null)"
|
|
+ [ -n "$rootfs_data_max" ] && rootfs_data_max=$(printf %d "$rootfs_data_max")
|
|
+
|
|
local kernel_length="$3"
|
|
local has_env="${4:-0}"
|
|
|
|
@@ -176,11 +179,11 @@ nand_upgrade_prepare_ubi() {
|
|
|
|
# update rootfs
|
|
if [ -n "$rootfs_length" ]; then
|
|
- local root_size_param
|
|
+ local rootfs_size_param
|
|
if [ "$rootfs_type" = "ubifs" ]; then
|
|
- root_size_param="-m"
|
|
+ rootfs_size_param="-m"
|
|
else
|
|
- root_size_param="-s $rootfs_length"
|
|
+ rootfs_size_param="-s $rootfs_length"
|
|
fi
|
|
if ! ubimkvol /dev/$ubidev -N $CI_ROOTPART $rootfs_size_param; then
|
|
echo "cannot create rootfs volume"
|
|
@@ -190,7 +193,16 @@ nand_upgrade_prepare_ubi() {
|
|
|
|
# create rootfs_data for non-ubifs rootfs
|
|
if [ "$rootfs_type" != "ubifs" ]; then
|
|
- if ! ubimkvol /dev/$ubidev -N rootfs_data -m; 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
|
|
+ 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
|
|
fi
|
|
--
|
|
2.25.1
|
|
|