aboutsummaryrefslogtreecommitdiff
path: root/ubi-utils
diff options
context:
space:
mode:
Diffstat (limited to 'ubi-utils')
-rw-r--r--ubi-utils/mtdinfo.c2
-rw-r--r--ubi-utils/ubinize.c4
-rw-r--r--ubi-utils/ubirsvol.c9
3 files changed, 10 insertions, 5 deletions
diff --git a/ubi-utils/mtdinfo.c b/ubi-utils/mtdinfo.c
index 12d35eb..61ce7bc 100644
--- a/ubi-utils/mtdinfo.c
+++ b/ubi-utils/mtdinfo.c
@@ -204,7 +204,7 @@ static void print_region_map(const struct mtd_dev_info *mtd, int fd,
for (i = 0; i < reginfo->numblocks; ++i) {
start = reginfo->offset + (unsigned long long)i * reginfo->erasesize;
- printf(" %*i: %08lx ", width, i, start);
+ printf(" %*i: %08llx ", width, i, start);
if (ret_locked != -1) {
ret_locked = mtd_is_locked(mtd, fd, i);
diff --git a/ubi-utils/ubinize.c b/ubi-utils/ubinize.c
index ac8c1e5..9c950b1 100644
--- a/ubi-utils/ubinize.c
+++ b/ubi-utils/ubinize.c
@@ -375,8 +375,8 @@ static int read_section(const struct ubigen_info *ui, const char *sname,
vi->alignment = iniparser_getint(args.dict, buf, -1);
if (vi->alignment == -1)
vi->alignment = 1;
- else if (vi->id < 0)
- return errmsg("negative volume alignment %d in section \"%s\"",
+ else if (vi->alignment <= 0)
+ return errmsg("not positive volume alignment %d in section \"%s\"",
vi->alignment, sname);
verbose(args.verbose, "volume alignment: %d", vi->alignment);
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");