Subject: ubi-utils: pddcustomize fixup update volume From: Frank Haverkamp Somehow calling ubi_update_start was forgotten and caused the tool not to write but silently ignore the write. Signed-off-by: Frank Haverkamp --- ubi-utils/src/bootenv.c | 2 +- ubi-utils/src/pddcustomize.c | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) --- mtd-utils.git.orig/ubi-utils/src/bootenv.c +++ mtd-utils.git/ubi-utils/src/bootenv.c @@ -1,5 +1,5 @@ /* - * Copyright (c) International Business Machines Corp., 2006 + * Copyright (c) International Business Machines Corp., 2008 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by --- mtd-utils.git.orig/ubi-utils/src/pddcustomize.c +++ mtd-utils.git/ubi-utils/src/pddcustomize.c @@ -1,5 +1,5 @@ /* - * Copyright (c) International Business Machines Corp., 2006 + * Copyright (c) International Business Machines Corp., 2008 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,6 +27,7 @@ * 1.3 Removed argp because we want to use uClibc. * 1.4 Minor cleanups * 1.5 Migrated to new libubi + * 1.6 Fixed broken volume update */ #include @@ -46,7 +47,7 @@ #include "libubi.h" #include "ubimirror.h" -#define PROGRAM_VERSION "1.5" +#define PROGRAM_VERSION "1.6" #define DEFAULT_DEV_PATTERN "/dev/ubi%d" #define DEFAULT_VOL_PATTERN "/dev/ubi%d_%d" @@ -369,7 +370,7 @@ ubi_write_bootenv(uint32_t devno, uint32 int rc = 0; char path[PATH_MAX]; FILE* fp_out = NULL; - size_t nbytes ; + size_t nbytes; rc = bootenv_size(env, &nbytes); if (rc) { @@ -387,6 +388,13 @@ ubi_write_bootenv(uint32_t devno, uint32 fp_out = fopen(path, "r+"); if (fp_out == NULL) { err_msg("Cannot fopen volume:%d number:%d\n", devno, id); + rc = -EBADF; + goto err; + } + + rc = ubi_update_start(ulib, fileno(fp_out), nbytes); + if (rc != 0) { + err_msg("Cannot start update for %s\n", path); goto err; } @@ -396,7 +404,6 @@ ubi_write_bootenv(uint32_t devno, uint32 devno, id); goto err; } - err: if( fp_out ) fclose(fp_out); @@ -495,9 +502,9 @@ main(int argc, char **argv) { rc = write_bootenv(args.file_in, env); else rc = ubi_write_bootenv(EXAMPLE_UBI_DEVICE, boot_volno, env); - if (rc != 0) { + if (rc != 0) goto err; - } + if( args.both ) /* No side specified, update both */ rc = do_mirror(boot_volno);