#define YAFFS_OBJECT_SPACE 0x40000
-#define YAFFS_NCHECKPOINT_OBJECTS 5000
-
-#define YAFFS_CHECKPOINT_VERSION 2
+#define YAFFS_CHECKPOINT_VERSION 3
#ifdef CONFIG_YAFFS_UNICODE
#define YAFFS_MAX_NAME_LENGTH 127
YAFFS_OBJECT_TYPE_SPECIAL
} yaffs_ObjectType;
+#define YAFFS_OBJECT_TYPE_MAX YAFFS_OBJECT_TYPE_SPECIAL
+
typedef struct {
unsigned validMarker0;
/* This block has failed and is not in use */
} yaffs_BlockState;
+#define YAFFS_NUMBER_OF_BLOCK_STATES (YAFFS_BLOCK_STATE_DEAD + 1)
+
+
typedef struct {
int softDeletions:10; /* number of soft deleted pages */
__u32 needsRetiring:1; /* Data has failed on this block, need to get valid data off */
/* and retire the block. */
__u32 skipErasedCheck: 1; /* If this is set we can skip the erased check on this block */
- __u32 gcPrioritise: 1; /* An ECC check or bank check has failed on this block.
+ __u32 gcPrioritise: 1; /* An ECC check or blank check has failed on this block.
It should be prioritised for GC */
__u32 chunkErrorStrikes:3; /* How many times we've had ecc etc failures on this block and tried to reuse it */
int nReservedBlocks; /* We want this tuneable so that we can reduce */
/* reserved blocks on NOR and RAM. */
- /* Stuff used by the partitioned checkpointing mechanism */
- int checkpointStartBlock;
- int checkpointEndBlock;
/* Stuff used by the shared space checkpointing mechanism */
/* If this value is zero, then this mechanism is disabled */
/* End of stuff that must be set before initialisation. */
+
+ /* Checkpoint control. Can be set before or after initialisation */
+ __u8 skipCheckpointRead;
+ __u8 skipCheckpointWrite;
/* Runtime parameters. Set up by YAFFS. */
int checkpointNextBlock;
int *checkpointBlockList;
int checkpointMaxBlocks;
+ __u32 checkpointSum;
+ __u32 checkpointXor;
/* Block Info */
yaffs_BlockInfo *blockInfo;