JFFS2 Write Verify

Richard Schmitt rschmitt at airvana.com
Thu Dec 15 12:43:34 EST 2011


My question is on when is a block marked bad.

By looking at the code, it appears a block is marked bad if it had an error erasing a block MAX_ERASE_FAILURE times.

I’m not sure what is causing our failure scenario, but we seem to have a bad block, yet it never fails an erase.   We receive write verify errors on a particular range of blocks.  Never erase failures, just write verify errors.  The write verify errors are always dropped bits throughout the page.  For some reason, we never see this failure on the erase.

I would hope that a write verify failure would cause the block to be marked bad.  What is the rational for this not to be the case?

The blocks that experience these write verify errors end up appearing as MAGIC BITMASK ERRORS the next time the partition is mounted since they are not marked as bad, nor are they erased after the write verify error.

A related brainstorming question.  How are erase failures detected?  Is it possible that the block isn’t erased properly yet not detected.  Since, as I understand nand flash, an erase sets all bits to ‘1’ and a write simply erases particular bits, a bad erase, which doesn’t succeed in setting all bits to ‘1’ could result in a write verify error that looks like dropped bits.  So, could it be that our problem is that we are not detecting failed erases.  if so, any help will be appreciated.

We are using linux version 2.6.32 on a freescale P1010 board which uses the fsl_ifc_nand chip driver.

Thanks,
Rich Schmitt

Airvana, Inc.




More information about the linux-mtd mailing list