Badblock management is provided by MTD driver, so you might want to take a look there.

If you are asking how to 'recover' those bad blocks, definitely you will need to search in MTD. If you are storing a bad block table on nand, you could simply erasing the blocks storing the BBT(usually last four blocks). Or if bad blocks are scanned every time, you need to check how to erase the bad block marker in OOB area.

If you are asking why there are so many bad blocks, and suggesting yaffs marks 'more' bad blocks than jffs2, we need Charles idea here. I know yaffs will mark a block bad if it read/write fails or ECC errors for 3 times. However I also encountered some NAND, and that 1/4 blocks were marked bad after not very much use. I could not determine whether this is a hardware problem or driver bugs. Any one had similar problems?

I have a question here, why the bad blocks are considered free space? This will be a problem if there's a significant number of bad blocks for whatever reason.

On May 23, 2012 12:33 AM, "Patrick" <kpa_info@yahoo.fr> wrote:
Hello all,

I am using yaffs2-7862c13 on a Linux 3.3 kernel on ARM (omap4).
When writing to the yaffs2 partition I could never write more than approximatively half the size of the partition after the partition looks like full.

Then if I try to erase the partition with flash_erase I have many (approx. half of the partition) badblocks that I could never revert.

I have tried exactly the same manipulation on the same hardware with the same kernel (but with a new flash) using jffs2 instead of yaffs2 and I have not this problems of badblocks.

The flash is a 1Gb with 2048 bytes blocks.

Do you have any idea why ?
How could I revert the badblocks markers ?

Thanks for your help.

Patrick


_______________________________________________
yaffs mailing list
yaffs@lists.aleph1.co.uk
http://lists.aleph1.co.uk/cgi-bin/mailman/listinfo/yaffs


--