[PATCH] ubi-utils: ubirsvol: resize volume using all available free space

KAMenyaev at salutedevices.com KAMenyaev at salutedevices.com
Sat May 24 10:26:39 PDT 2025


From: Konstantin Menyaev <KAMenyaev at salutedevices.com>

useful in resizing last ubi volume,
some kind of auto-resize ubinize option.

Signed-off-by: Konstantin Menyaev <KAMenyaev at salutedevices.com>
---
 ubi-utils/ubirsvol.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/ubi-utils/ubirsvol.c b/ubi-utils/ubirsvol.c
index 73d2f68..55f6794 100644
--- a/ubi-utils/ubirsvol.c
+++ b/ubi-utils/ubirsvol.c
@@ -57,8 +57,10 @@ static const char optionsstr[] =
 "-N, --name=<volume name>   volume name to resize\n"
 "-s, --size=<bytes>         volume size volume size in bytes, kilobytes (KiB)\n"
 "                           or megabytes (MiB)\n"
+"                           zero size means use all available free bytes\n"
 "-S, --lebs=<LEBs count>    alternative way to give volume size in logical\n"
 "                           eraseblocks\n"
+"                           zero size means use all available free LEBs\n"
 "-h, -?, --help             print help message\n"
 "-V, --version              print program version";
 
@@ -114,13 +116,13 @@ static int parse_opt(int argc, char * const argv[])
 		switch (key) {
 		case 's':
 			args.bytes = util_get_bytes(optarg);
-			if (args.bytes <= 0)
+			if (args.bytes < 0)
 				return errmsg("bad volume size: \"%s\"", optarg);
 			break;
 
 		case 'S':
 			args.lebs = simple_strtoull(optarg, &error);
-			if (error || args.lebs <= 0)
+			if (error || args.lebs < 0)
 				return errmsg("bad LEB count: \"%s\"", optarg);
 			break;
 
@@ -233,6 +235,9 @@ int main(int argc, char * const argv[])
 	if (args.lebs != -1)
 		args.bytes = (long long)vol_info.leb_size * args.lebs;
 
+	if (args.lebs == 0 || args.bytes == 0)
+		args.bytes = vol_info.rsvd_bytes + dev_info.avail_bytes;
+
 	err = ubi_rsvol(libubi, args.node, args.vol_id, args.bytes);
 	if (err) {
 		sys_errmsg("cannot UBI resize volume");
-- 
2.49.0




More information about the linux-mtd mailing list