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