[PATCH] Fixup in NAND bad block management + fix of misspring .(nand_base.c)
Vitaly Wool
vwool at ru.mvista.com
Wed Feb 8 15:11:02 EST 2006
Hi Alexey,
Alexey, Korolev wrote:
>
> ==================================
> --- a/drivers/mtd/nand/nand_base.c 2006-01-20 18:13:49.657859296 +0300
> +++ b/drivers/mtd/nand/nand_base.c 2006-01-20 18:38:50.281729792 +0300
> @@ -410,6 +410,7 @@
> static int nand_block_bad(struct mtd_info *mtd, loff_t ofs, int getchip)
> {
> int page, chipnr, res = 0;
> + int badblockpos;
Bah, alignment/tabs problem...
>
> + /* If pattern is given we must use offset from badblock_pattern
> structure
> + else we should use badblockpos which is filled by default
> values */
> + if (this->badblock_pattern)
> + badblockpos=this->badblock_pattern->offs;
> + else
> + badblockpos=this->badblockpos;
> +
I'm not sure this is right. If badblock_pattern is set, we shouldn't
ever be here.
> if (this->badblockpos & 0x1)
> - bad >>= 8;
> + bad >>= 1;
And here you do revert the bugfix committed long ago.
> @@ -470,8 +478,11 @@
> if (this->options & NAND_USE_FLASH_BBT)
> return nand_update_bbt (mtd, ofs);
>
> - /* We write two bytes, so we dont have to mess with 16 bit access */
> - ofs += mtd->oobsize + (this->badblockpos & ~0x01);
> + if (this->badblock_pattern)
> + ofs += (this->badblock_pattern->offs & ~0x01);
> + else
> + ofs += (this->badblockpos & ~0x01);
> +
See above.
Vitaly
More information about the linux-mtd
mailing list