*/
//yaffs_guts.c
-const char *yaffs_guts_c_version="$Id: yaffs_guts.c,v 1.13 2005-08-01 04:53:01 charles Exp $";
+const char *yaffs_guts_c_version="$Id: yaffs_guts.c,v 1.15 2005-08-02 04:24:22 charles Exp $";
#include "yportenv.h"
tags.serialNumber++;
dev->nGCCopies++;
+
+ if(tags.chunkId == 0)
+ {
+ // It is an object Id,
+ // We need to nuke the shrinkheader flags first
+ // We no longer want the shrinkHeader flag since its work is done
+ // and if it is left in place it will mess up scanning.
+
+ yaffs_ObjectHeader *oh = (yaffs_ObjectHeader *)buffer;
+ oh->isShrink = 0;
+ tags.extraIsShrinkHeader = 0;
+ }
newChunk = yaffs_WriteNewChunkWithTagsToNAND(dev, buffer, &tags,1);
isShrink = 1;
}
- if(in->variant.fileVariant.shrinkSize > thisSize)
+ if(isShrink &&
+ in->variant.fileVariant.shrinkSize > thisSize)
{
in->variant.fileVariant.shrinkSize = thisSize;
}
{
in->variant.fileVariant.fileSize = oh->fileSize;
in->variant.fileVariant.scannedFileSize = in->variant.fileVariant.fileSize;
- }
-
-
+ }
- if(in->variant.fileVariant.shrinkSize > oh->fileSize)
+ if(oh->isShrink &&
+ in->variant.fileVariant.shrinkSize > oh->fileSize)
{
in->variant.fileVariant.shrinkSize = oh->fileSize;
- }
-
+ }
break;
case YAFFS_OBJECT_TYPE_HARDLINK: