# HG changeset patch # User charles # Date 1232066685 0 # Node ID 08307f2d7546791787def6409493c3a17f5b175d # Parent ac67e3d7378b982f2382abf79a5c98d915cf99ef Handle unfixed ecc errors better when scanning diff --git a/yaffs_guts.c b/yaffs_guts.c --- a/yaffs_guts.c +++ b/yaffs_guts.c @@ -11,6 +11,7 @@ * published by the Free Software Foundation. */ + const char *yaffs_guts_c_version = "$Id$"; @@ -4363,7 +4364,6 @@ static int yaffs_CheckpointTnodeWorker(y } } 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(ya /* 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_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 =