On 11/29/2013 07:45 PM, Linzichang wrote:

In yaffs_rd_chunk_tags_nand, if the result isn’t YAFFS_ECC_RESULT_NO_ERROR, it will call yaffs_handle_chunk_error to mark that’s an error.

 

Here is my question. Why also consider that’s an error when the result is YAFFS_ECC_RESULT_FIXED?


It only calls yaffshandle_chunk_error() if the result from the read shows error correction was required. A read that required ECC correction shows that page is having trouble retaining accurate data, and if (many) repeated reads of the same page are done the data will eventually go bad (resulting in an uncorrectable error correction) thereby losing the data.  To prevent this if enough ECC corrections are made within a block yaffs_handle_chunk_error will force the block to be garbage collected (which copies out any good data into another block and erases the block).  This is done to handle read disturb errors whereby the process of reading data multiple times can disturb bits.

-- 
Peter Barada
peter.barada@logicpd.com