X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_yaffs2.c;h=e13dd41c5272a23dfe8bebc452f76ac02d7641c1;hp=ab175b9e24d3fbae9aa0afaf74e894c3670c49dd;hb=679f371f44c58b815b42f3390a81c269f5bb9710;hpb=4a700fe570d217c2c5df87070db7c2652bc0eaaf diff --git a/yaffs_yaffs2.c b/yaffs_yaffs2.c index ab175b9..e13dd41 100644 --- a/yaffs_yaffs2.c +++ b/yaffs_yaffs2.c @@ -20,6 +20,7 @@ #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. @@ -206,6 +207,7 @@ int yaffs2_CheckpointRequired(yaffs_Device *dev) nblocks = dev->internalEndBlock - dev->internalStartBlock + 1 ; return !dev->param.skipCheckpointWrite && + !dev->readOnly && (nblocks >= YAFFS_CHECKPOINT_MIN_BLOCKS); } @@ -1132,7 +1134,8 @@ int yaffs2_ScanBackwards(yaffs_Device *dev) } else if (tags.objectId > YAFFS_MAX_OBJECT_ID || tags.chunkId > YAFFS_MAX_CHUNK_ID || - (tags.chunkId > 0 && tags.byteCount > dev->nDataBytesPerChunk)) { + (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)); @@ -1313,7 +1316,6 @@ int yaffs2_ScanBackwards(yaffs_Device *dev) in->valid = 1; if (oh) { - in->variantType = oh->type; in->yst_mode = oh->yst_mode; #ifdef CONFIG_YAFFS_WINCE @@ -1331,11 +1333,11 @@ int yaffs2_ScanBackwards(yaffs_Device *dev) 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;