#include "yaffs_qsort.h"
#include "yaffs_nand.h"
#include "yaffs_getblockinfo.h"
+#include "yaffs_verify.h"
/*
* Checkpoints are really no benefit on very small partitions.
nblocks = dev->internalEndBlock - dev->internalStartBlock + 1 ;
return !dev->param.skipCheckpointWrite &&
+ !dev->readOnly &&
(nblocks >= YAFFS_CHECKPOINT_MIN_BLOCKS);
}
dev->nFreeChunks++;
+ } else if (tags.objectId > YAFFS_MAX_OBJECT_ID ||
+ tags.chunkId > YAFFS_MAX_CHUNK_ID ||
+ (tags.chunkId > 0 && tags.byteCount > dev->nDataBytesPerChunk) ||
+ tags.sequenceNumber != bi->sequenceNumber ) {
+ T(YAFFS_TRACE_SCAN,
+ (TSTR("Chunk (%d:%d) with bad tags:obj = %d, chunkId = %d, byteCount = %d, ignored"TENDSTR),
+ blk, c,tags.objectId, tags.chunkId, tags.byteCount));
+
+ dev->nFreeChunks++;
+
} else if (tags.chunkId > 0) {
/* chunkId > 0 so it is a data chunk... */
unsigned int endpos;
in->valid = 1;
if (oh) {
- in->variantType = oh->type;
in->yst_mode = oh->yst_mode;
#ifdef CONFIG_YAFFS_WINCE
in->yst_ctime = oh->yst_ctime;
in->yst_rdev = oh->yst_rdev;
+ in->lazyLoaded = 0;
+
#endif
- } else {
- in->variantType = tags.extraObjectType;
+ } else
in->lazyLoaded = 1;
- }
in->hdrChunk = chunk;
- yaffs_SetObjectName(in, oh->name);
+ yaffs_SetObjectNameFromOH(in, oh);
parent =
yaffs_FindOrCreateObjectByNumber
(dev, oh->parentObjectId,