On Tue, 23 Oct 2012, peterlingoal wrote: > Will YAFFS apply same block retiring policy to the check pointing block? > I asked this question because I've noticed sometimes MTD driver is > reporting un-correct ECC failure but number of bad blocks is not > increased. An ECC failure in itself does not indicate that the block is bad, just that the data has deteriorated. The phenomenon (usually called read disturb) is well known of NAND flash devices, even if different devices exhibit the effect to different degrees. What should happen is that once ECC starts reporting that ECC correction is taking place, some layer should rewrite the data elsewhere and erase the original block for re-use. The critera for considering a block bad are somewhat diffuse. The flash chip itself can report that a write or erase operation failed, but by then the block is usually in a very bad state (very low data retention capability), far below spec. The most ideal would probably be some combination of a limit on the number of erase/write cycles and measurement of how long time has passed between writing the block and subsequent read errors. Since flash chips have a specification on the number of erase/write cycles that can be peformed (e.g. 100 000 for a typical SLC NAND flash), it would make sense to mark a block as bad if it has been through this many cycles. Additionally if the time between writing a block and reading-with-ECC-errors is below a certain limit it indicates that the data retention is too low for practical use and the block should be retired. I suspect YAFFS doesn't do much of this (but I'm by no means a YAFFS expert); the mtd layer certainly doesn't. /Ricard -- Ricard Wolf Wanderlöf ricardw(at)axis.com Axis Communications AB, Lund, Sweden www.axis.com Phone +46 46 272 2016 Fax +46 46 13 61 30