IIUC, yaffs1 compatibility mode checks tags ECCs and updates stats on tags ECC errors when scanning an unused chunk of a partially-allocated block at mount time. This causes a mildly alarming "tagsEccUnfixed..... 1" in /proc/yaffs. Suggested fix below. Signed-off-by: Todd Poynor Index: yaffs_tagscompat.c =================================================================== RCS file: /home/aleph1/cvs/yaffs2/yaffs_tagscompat.c,v retrieving revision 1.7 diff -u -r1.7 yaffs_tagscompat.c --- yaffs_tagscompat.c 20 Sep 2005 23:12:38 -0000 1.7 +++ yaffs_tagscompat.c 18 Nov 2005 04:03:47 -0000 @@ -455,20 +455,22 @@ int deleted = (yaffs_CountBits(spare.pageStatus) < 7) ? 1 : 0; - yaffs_GetTagsFromSpare(dev, &spare, &tags); - eTags->chunkDeleted = deleted; - eTags->objectId = tags.objectId; - eTags->chunkId = tags.chunkId; - eTags->byteCount = tags.byteCount; - eTags->serialNumber = tags.serialNumber; eTags->eccResult = eccResult; eTags->blockBad = 0; /* We're reading it */ /* therefore it is not a bad block */ - eTags->chunkUsed = (memcmp(&spareFF, &spare, sizeof(spareFF)) != 0) ? 1 : 0; + + if (eTags->chunkUsed) { + yaffs_GetTagsFromSpare(dev, &spare, &tags); + + eTags->objectId = tags.objectId; + eTags->chunkId = tags.chunkId; + eTags->byteCount = tags.byteCount; + eTags->serialNumber = tags.serialNumber; + } } return YAFFS_OK;