Scott,
On Tuesday 24 March 2009, Wagner Scott (ST-IN/ENG1.1) wrote:
> There is indeed something artificial about my test ... on this
> system, I know that Block 2629 is physically bad. At least
> part of the time, writes to some of its pages will not
> succeed. I have force-erased it (all OOB bad block markers
> are reset) to simulate the condition where I have a new NAND
> chip with as-yet-undiscovered bad pages. This explains the
> observation that the "block/page is not completely erased when
> Yaffs believes it to have been so."
>
> My real concern is what happens when I have page write
> failures.. I think what you are saying is that YAFFS:
> - retries the write on a different page
yes
> - leaves the incorrectly written page alone and orphaned (e.g.
> it won't be part of the YAFFS fs structure)
yes
> - allows the eraseblock (and its remaining good pages) to live
> on, at least until erasure
yes
> - Marks the eraseblock bad in OOB when it is erased (e.g.
> retires the block at erase time)
I don't know about the real marking of bad blocks. We have
actually disabled this in some versions of products where we
were bitten by transient write errors causing large number of
blocks to be persistently marked bad (OOB) and taken out of
service.
> Is this right? If so, it seems OK as long as bad pages within
> an eraseblock does not imply unreliability of other pages
> within the same eraseblock.
The logic around declaring a block truly bad and broken is
lacking (both Yaffs and MTD). IRCC, NAND vendors recommend that
blocks should be erased when there are write/read errors, and
only marked bad if the erase fails, and then perhaps only after
several attempts. Neither Yaffs nor MTD to this.
-imcd