[Yaffs] RE: inadvertently marking all blocks bad?

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Lawson.Reed
Date:  
To: 'yaffs@stoneboat.aleph1.co.uk'
New-Topics: RE: [Yaffs] RE: 7/7/05
Subject: [Yaffs] RE: inadvertently marking all blocks bad?
First of all, My thoughts and prayers are with you in the UK
as you recover from this horrific attack on your country,
this slaughter of innocent people by those sick terrorist.
Just horrible....

Anyway...

I wanted to let you know I found part of my problem. I did not have
useecc = MTD_NANDECC_AUTOPLACE. I had to do this 
in my map driver: 
    igt_sn2_mtd->oobinfo.useecc = MTD_NANDECC_AUTOPLACE;
just before adding the partition.


then, I was getting an infinite loop because of this in
nand_prepare_oobbuf():

        for (i = 0, len = 0; len < mtd->oobavail; i++) {
            int to = ofs + oobsel->oobfree[i][0];
            int num = oobsel->oobfree[i][1];
            memcpy (&this->oob_buf[to], fsbuf, num);
            len += num;
            fsbuf += num;
        }
my mtd->oobavail was 39 and my oobsel->oobfree[0][1] was 38.
but the next one (oobsel->oobfree[1][1]) was 0 making "num"
zero so the loop went forever. That's pretty nasty. 
I change mtd->oobavail to 38 and then it was happy. Humm.


However, now I am getting tons of these when I remove a file
and copy another one in:

    page 130 in gc has no object
    page 131 in gc has no object
    page 132 in gc has no object
    page 133 in gc has no object
    page 134 in gc has no object
    etc....


Any ideas? Is it because I moved the stuff in the oob and now
someplace else can't find it? Is this MTD_NANDECC_AUTOPLACE
the right thing to set to avoid the zeroing out of the
bad block markers? or is there a better way?

Thanks.
__________________________________
Reed Lawson
IGT Firmware Engineering
(775) 448-0755