public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
From: Ian McDonnell <ian@brightstareng.com>
To: linux-mtd@lists.infradead.org,
	Martin Egholm Nielsen <martin@egholm-nielsen.dk>
Subject: Re: [Yaffs1] mkyaffs exits with "MTD Erase failure"
Date: Wed, 6 Jun 2007 12:07:27 -0400	[thread overview]
Message-ID: <200706061207.27957.ian@brightstareng.com> (raw)
In-Reply-To: <mailman.1398.1181133636.2239.linux-mtd@lists.infradead.org>

On Wednesday 06 June 2007 08:40, Martin Egholm Nielsen wrote:
> Well, glancing at the code, it should be doing something like
> it:
>
> ==== ORIGINAL mkyaffs.c ====
> for(addr = 0; addr < meminfo.size; addr += meminfo.erasesize)
> {
>    /* Read the OOB data to determine if the block is valid.
>     * If the block is damaged, then byte 5 of the OOB data
> will * have at least 2 zero bits.
>     */
>    oob.start = addr;
>    oob.length = 16;
>    oob.ptr = oobbuf;
>    if (ioctl(fd, MEMREADOOB, &oob) != 0)
>    {
>      perror("ioctl(MEMREADOOB)");
>      close(fd);
>      exit(1);
>    }
>
>    if(countBits[oobbuf[5]] < 7)
>    {
>      printf("Block at 0x08%lx is damaged and is not being
> formatted\n",addr);
>    }
> =======================
>
> However, it doesn't seem to do the trick. So I copied the
> check from "flash_eraseall" and put in, as well:
>
> ==== NEW mkyaffs.c ====
> for(addr = 0; addr < meminfo.size; addr += meminfo.erasesize)
> {
>    /* MEN 2007-06-06 */
>    loff_t bah = addr;
>    int ret = ioctl(fd, MEMGETBADBLOCK, &bah);
>    if (ret > 0)
>    {
>      printf( "Block at 0x08%lx would have been ignored by
> flash_eraseall!\n", addr );
>      continue;
>    } // if
>
>    // OLD CODE HERE
> =======================
>
>
> And now it seems to work:
>
> # mkyaffs-hacked-2007-06-06 -e /dev/mtd0
> argc 3 sh 0 optcnt 2
> Erasing and programming NAND
> Erasing block at 0x080
> Erasing block at 0x084000
> ...
> Erasing block at 0x0898000
> Block at 0x089c000 would have been ignored by flash_eraseall!
> ....
>
>
> So that's good!? Unless there is a reason why that check was
> not there originally!
> Charles Manning, do you care for a comment?

mkyaffs.c coding is from way back when reading the OOB was more
transparent (originally written to run on 'raw' NAND without MTD, 
non-linux). These days (post 2.6.17 mtd, perhaps earlier) this 
technique is not successful.  The OOB bytes returned by MTD will 
have been gathered using the nand_ecclayout policy from the nand 
driver or nand_base.c and the byte *returned* at offset 5 is not 
(necessarily) the block/page status byte and physical offset 5,
as with old mtd api.

See the yaffs mail archive regarding issues with constructing 
Yaffs images using mkyaffs.c etc.  Replacing this old test for a 
bad-block with MEMGETBADBLOCK is fine, but might only take you 
to the next road block.

-imcd

       reply	other threads:[~2007-06-06 16:07 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.1398.1181133636.2239.linux-mtd@lists.infradead.org>
2007-06-06 16:07 ` Ian McDonnell [this message]
2007-06-06 20:38   ` [Yaffs1] mkyaffs exits with "MTD Erase failure" Martin Egholm Nielsen
2007-06-04 13:06 Martin Egholm Nielsen
2007-06-04 13:58 ` Ricard Wanderlof
2007-06-04 14:36   ` Martin Egholm Nielsen
2007-06-04 15:12     ` Ricard Wanderlof
2007-06-06 12:06       ` Martin Egholm Nielsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200706061207.27957.ian@brightstareng.com \
    --to=ian@brightstareng.com \
    --cc=linux-mtd@lists.infradead.org \
    --cc=martin@egholm-nielsen.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox