From: marty Date: Tue, 29 Nov 2005 20:54:32 +0000 (+0000) Subject: Subject: [Yaffs] Avoid tagsEccUnfixed stats bump on mounting partially usedblock X-Git-Tag: pre-name-change~387 X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=commitdiff_plain;h=ce988b0f03f8e930859563e59ea90bdc193d1c9f;hp=8e45dc216be0b36eb0fd633543a2a184c81c5b9b Subject: [Yaffs] Avoid tagsEccUnfixed stats bump on mounting partially usedblock 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 --- diff --git a/yaffs_tagscompat.c b/yaffs_tagscompat.c index 2cf783e..b51bccd 100644 --- a/yaffs_tagscompat.c +++ b/yaffs_tagscompat.c @@ -10,7 +10,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * - * $Id: yaffs_tagscompat.c,v 1.7 2005-09-20 23:12:38 charles Exp $ + * $Id: yaffs_tagscompat.c,v 1.8 2005-11-29 20:54:32 marty Exp $ */ #include "yaffs_guts.h" @@ -455,20 +455,22 @@ int yaffs_TagsCompatabilityReadChunkWithTagsFromNAND(yaffs_Device * dev, 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;