yaffs_CheckpointFindNextCheckpointBlock : dev->readChunkWithTagsFromNAND(dev,realignedChunk,NULL,&tags); if(tags.sequenceNumber == YAFFS_SEQUENCE_CHECKPOINT_DATA) { ...... } If this block is "bad block", the tags seq value may equal to YAFFS_SEQUENCE_CHECKPOINT_DATA , so yaffs stop read checkpoint data from the real checkpoint block. Any tips?