From 8642921e20e15e95736ea7821f450ac2cb6d92b2 Mon Sep 17 00:00:00 2001 From: charles Date: Fri, 16 Jan 2009 00:44:45 +0000 Subject: [PATCH] Handle unfixed ecc errors better when scanning --- yaffs_guts.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/yaffs_guts.c b/yaffs_guts.c index 5aca0d2..76074cd 100644 --- a/yaffs_guts.c +++ b/yaffs_guts.c @@ -11,8 +11,9 @@ * published by the Free Software Foundation. */ + const char *yaffs_guts_c_version = - "$Id: yaffs_guts.c,v 1.71 2009-01-12 00:53:47 charles Exp $"; + "$Id: yaffs_guts.c,v 1.72 2009-01-16 00:44:45 charles Exp $"; #include "yportenv.h" @@ -4363,7 +4364,6 @@ static int yaffs_CheckpointTnodeWorker(yaffs_Object * in, yaffs_Tnode * tn, } } else if (level == 0) { __u32 baseOffset = chunkOffset << YAFFS_TNODES_LEVEL0_BITS; - /* printf("write tnode at %d\n",baseOffset); */ ok = (yaffs_CheckpointWrite(dev,&baseOffset,sizeof(baseOffset)) == sizeof(baseOffset)); if(ok) ok = (yaffs_CheckpointWrite(dev,tn,tnodeSize) == tnodeSize); @@ -4412,7 +4412,6 @@ static int yaffs_ReadCheckpointTnodes(yaffs_Object *obj) /* Read level 0 tnode */ - /* printf("read tnode at %d\n",baseChunk); */ tn = yaffs_GetTnodeRaw(dev); if(tn) ok = (yaffs_CheckpointRead(dev,tn,tnodeSize) == tnodeSize); @@ -6286,7 +6285,11 @@ static int yaffs_ScanBackwards(yaffs_Device * dev) dev->nFreeChunks++; - } else if (tags.chunkId > 0) { + } else if (tags.eccResult == YAFFS_ECC_RESULT_UNFIXED){ + printf("Error in ECC\n"); + /* Don't actually delete because the chunk is not yet set up as being in use */ + /* yaffs_DeleteChunk(dev, chunk, 1, __LINE__); */ + }else if (tags.chunkId > 0) { /* chunkId > 0 so it is a data chunk... */ unsigned int endpos; __u32 chunkBase = -- 2.30.2