Hi Richard, On Wed, Jun 18, 2014 at 04:59:49PM +0200, Richard Genoud wrote: > 2014-06-18 16:08 GMT+02:00 Baruch Siach <[email protected]>: > > On Wed, Jun 18, 2014 at 03:44:30PM +0200, Richard Genoud wrote: > >> With the "skip bad block" option, nanddump is not dumping the right > >> length if there's bad blocks. > >> > >> This patch moves the end read address each time a bad block is > >> encountered. > > > > This changes nanddump behaviour from upstream historical --omitbad (-b; > > removed in upstream d8b8f780ec3c), to existing skipbad, for which upstream > > uses the --bb=skipbad command line parameter. To avoid confusion, we should > > adapt to upstream command line parameter names, IMO. > > yeah, you are right, I verified with upstream nanddump, and it doesn't > update the length on bad block. > so, please ignore this patch.
I'm have no objection to this change. It matches the change made in upstream mtd-utils code (commits 5dfb5a6adc7311 and d8b8f780ec3c916). I just think that we should also change the command line parameters name to match (from -b to --bb=skipbad; see mtd-utils commit c2c3cb928935c). baruch > >> Signed-off-by: Richard Genoud <[email protected]> > >> --- > >> miscutils/nandwrite.c | 17 ++++++++++++++--- > >> 1 file changed, 14 insertions(+), 3 deletions(-) > >> > >> diff --git a/miscutils/nandwrite.c b/miscutils/nandwrite.c > >> index 8c4da802f6b3..a3593adedc82 100644 > >> --- a/miscutils/nandwrite.c > >> +++ b/miscutils/nandwrite.c > >> @@ -166,6 +166,10 @@ int nandwrite_main(int argc UNUSED_PARAM, char **argv) > >> int bad_len = MIN(tmp, end_addr) - mtdoffset; > >> dump_bad(&meminfo, bad_len, opts & OPT_o); > >> } > >> + /* with option skip bad block, increase the length */ > >> + if (IS_NANDDUMP && (opts & OPT_b)) { > >> + end_addr += (tmp - blockstart); > >> + } > >> mtdoffset = tmp; > >> } > >> } > >> @@ -182,9 +186,16 @@ int nandwrite_main(int argc UNUSED_PARAM, char **argv) > >> mtdoffset = next_good_eraseblock(fd, &meminfo, > >> blockstart); > >> if (IS_NANDWRITE) > >> printf("Writing at 0x%08x\n", mtdoffset); > >> - else if (mtdoffset > blockstart && !(opts & OPT_b)) { > >> - int bad_len = MIN(mtdoffset, limit) - > >> blockstart; > >> - dump_bad(&meminfo, bad_len, opts & OPT_o); > >> + else if (mtdoffset > blockstart) { > >> + if (opts & OPT_b) { > >> + /* omit bad block, but increase the > >> length */ > >> + end_addr += (mtdoffset - blockstart); > >> + limit = MIN(meminfo.size, end_addr); > >> + } else { > >> + /* dump bad block if asked */ > >> + int bad_len = MIN(mtdoffset, limit) > >> - blockstart; > >> + dump_bad(&meminfo, bad_len, opts & > >> OPT_o); > >> + } > >> } > >> if (mtdoffset >= limit) > >> break; -- http://baruch.siach.name/blog/ ~. .~ Tk Open Systems =}------------------------------------------------ooO--U--Ooo------------{= - [email protected] - tel: +972.2.679.5364, http://www.tkos.co.il - _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
