Rationalise stats gathering for nand access. Does not instrument mounting.
authorcharles <charles>
Wed, 9 Sep 2009 03:03:01 +0000 (03:03 +0000)
committercharles <charles>
Wed, 9 Sep 2009 03:03:01 +0000 (03:03 +0000)
yaffs_checkptrw.c
yaffs_mtdif1.c
yaffs_nand.c
yaffs_tagscompat.c

index ea03e3a298a9da28417f0333ec4ed6dad0953a17..4481bbcd210550a6b300541fd426bde29469ea69 100644 (file)
@@ -12,7 +12,7 @@
  */
 
 const char *yaffs_checkptrw_c_version =
  */
 
 const char *yaffs_checkptrw_c_version =
-       "$Id: yaffs_checkptrw.c,v 1.19 2009-06-19 01:35:46 charles Exp $";
+       "$Id: yaffs_checkptrw.c,v 1.20 2009-09-09 03:03:01 charles Exp $";
 
 
 #include "yaffs_checkptrw.h"
 
 
 #include "yaffs_checkptrw.h"
@@ -43,6 +43,9 @@ static int yaffs_CheckpointErase(yaffs_Device *dev)
                yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev, i);
                if (bi->blockState == YAFFS_BLOCK_STATE_CHECKPOINT) {
                        T(YAFFS_TRACE_CHECKPOINT, (TSTR("erasing checkpt block %d"TENDSTR), i));
                yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev, i);
                if (bi->blockState == YAFFS_BLOCK_STATE_CHECKPOINT) {
                        T(YAFFS_TRACE_CHECKPOINT, (TSTR("erasing checkpt block %d"TENDSTR), i));
+
+                       dev->nBlockErasures++;
+
                        if (dev->eraseBlockInNAND(dev, i - dev->blockOffset /* realign */)) {
                                bi->blockState = YAFFS_BLOCK_STATE_EMPTY;
                                dev->nErasedBlocks++;
                        if (dev->eraseBlockInNAND(dev, i - dev->blockOffset /* realign */)) {
                                bi->blockState = YAFFS_BLOCK_STATE_EMPTY;
                                dev->nErasedBlocks++;
@@ -222,6 +225,8 @@ static int yaffs_CheckpointFlushBuffer(yaffs_Device *dev)
 
        realignedChunk = chunk - dev->chunkOffset;
 
 
        realignedChunk = chunk - dev->chunkOffset;
 
+       dev->nPageWrites++;
+
        dev->writeChunkWithTagsToNAND(dev, realignedChunk,
                        dev->checkpointBuffer, &tags);
        dev->checkpointByteOffset = 0;
        dev->writeChunkWithTagsToNAND(dev, realignedChunk,
                        dev->checkpointBuffer, &tags);
        dev->checkpointByteOffset = 0;
@@ -309,6 +314,8 @@ int yaffs_CheckpointRead(yaffs_Device *dev, void *data, int nBytes)
                                        dev->checkpointCurrentChunk;
 
                                realignedChunk = chunk - dev->chunkOffset;
                                        dev->checkpointCurrentChunk;
 
                                realignedChunk = chunk - dev->chunkOffset;
+                               
+                               dev->nPageReads++;
 
                                /* read in the next chunk */
                                /* printf("read checkpoint page %d\n",dev->checkpointPage); */
 
                                /* read in the next chunk */
                                /* printf("read checkpoint page %d\n",dev->checkpointPage); */
index c069dfac79813685c675d7879d6c265c058c62a2..00fa4f2122e9e6148e1c86a629bef0b15a9be34e 100644 (file)
@@ -36,7 +36,7 @@
 /* Don't compile this module if we don't have MTD's mtd_oob_ops interface */
 #if (MTD_VERSION_CODE > MTD_VERSION(2, 6, 17))
 
 /* Don't compile this module if we don't have MTD's mtd_oob_ops interface */
 #if (MTD_VERSION_CODE > MTD_VERSION(2, 6, 17))
 
-const char *yaffs_mtdif1_c_version = "$Id: yaffs_mtdif1.c,v 1.10 2009-03-09 07:41:10 charles Exp $";
+const char *yaffs_mtdif1_c_version = "$Id: yaffs_mtdif1.c,v 1.11 2009-09-09 03:03:01 charles Exp $";
 
 #ifndef CONFIG_YAFFS_9BYTE_TAGS
 # define YTAG1_SIZE 8
 
 #ifndef CONFIG_YAFFS_9BYTE_TAGS
 # define YTAG1_SIZE 8
@@ -102,8 +102,6 @@ int nandmtd1_WriteChunkWithTagsToNAND(yaffs_Device *dev,
        compile_time_assertion(sizeof(yaffs_PackedTags1) == 12);
        compile_time_assertion(sizeof(yaffs_Tags) == 8);
 
        compile_time_assertion(sizeof(yaffs_PackedTags1) == 12);
        compile_time_assertion(sizeof(yaffs_Tags) == 8);
 
-       dev->nPageWrites++;
-
        yaffs_PackTags1(&pt1, etags);
        yaffs_CalcTagsECC((yaffs_Tags *)&pt1);
 
        yaffs_PackTags1(&pt1, etags);
        yaffs_CalcTagsECC((yaffs_Tags *)&pt1);
 
@@ -180,8 +178,6 @@ int nandmtd1_ReadChunkWithTagsFromNAND(yaffs_Device *dev,
        int retval;
        int deleted;
 
        int retval;
        int deleted;
 
-       dev->nPageReads++;
-
        memset(&ops, 0, sizeof(ops));
        ops.mode = MTD_OOB_AUTO;
        ops.len = (data) ? chunkBytes : 0;
        memset(&ops, 0, sizeof(ops));
        ops.mode = MTD_OOB_AUTO;
        ops.len = (data) ? chunkBytes : 0;
index bd815cb7af92b7dea0940e25ecd0daf9c19ebb58..0a76ca020d23ef2f59c55740b09e52d7ee259fec 100644 (file)
@@ -12,7 +12,7 @@
  */
 
 const char *yaffs_nand_c_version =
  */
 
 const char *yaffs_nand_c_version =
-       "$Id: yaffs_nand.c,v 1.10 2009-03-06 17:20:54 wookey Exp $";
+       "$Id: yaffs_nand.c,v 1.11 2009-09-09 03:03:01 charles Exp $";
 
 #include "yaffs_nand.h"
 #include "yaffs_tagscompat.h"
 
 #include "yaffs_nand.h"
 #include "yaffs_tagscompat.h"
@@ -29,6 +29,8 @@ int yaffs_ReadChunkWithTagsFromNAND(yaffs_Device *dev, int chunkInNAND,
 
        int realignedChunkInNAND = chunkInNAND - dev->chunkOffset;
 
 
        int realignedChunkInNAND = chunkInNAND - dev->chunkOffset;
 
+       dev->nPageReads++;
+
        /* If there are no tags provided, use local tags to get prioritised gc working */
        if (!tags)
                tags = &localTags;
        /* If there are no tags provided, use local tags to get prioritised gc working */
        if (!tags)
                tags = &localTags;
@@ -56,6 +58,9 @@ int yaffs_WriteChunkWithTagsToNAND(yaffs_Device *dev,
                                                   const __u8 *buffer,
                                                   yaffs_ExtendedTags *tags)
 {
                                                   const __u8 *buffer,
                                                   yaffs_ExtendedTags *tags)
 {
+
+       dev->nPageWrites++;
+
        chunkInNAND -= dev->chunkOffset;
 
 
        chunkInNAND -= dev->chunkOffset;
 
 
@@ -89,7 +94,7 @@ int yaffs_MarkBlockBad(yaffs_Device *dev, int blockNo)
 {
        blockNo -= dev->blockOffset;
 
 {
        blockNo -= dev->blockOffset;
 
-;
+
        if (dev->markNANDBlockBad)
                return dev->markNANDBlockBad(dev, blockNo);
        else
        if (dev->markNANDBlockBad)
                return dev->markNANDBlockBad(dev, blockNo);
        else
@@ -119,8 +124,8 @@ int yaffs_EraseBlockInNAND(struct yaffs_DeviceStruct *dev,
 
        blockInNAND -= dev->blockOffset;
 
 
        blockInNAND -= dev->blockOffset;
 
-
        dev->nBlockErasures++;
        dev->nBlockErasures++;
+
        result = dev->eraseBlockInNAND(dev, blockInNAND);
 
        return result;
        result = dev->eraseBlockInNAND(dev, blockInNAND);
 
        return result;
index 402537fb4ee1387132075c4247161bda4ab0d438..e3173cc2e23b1d237928a298ef221c7829535203 100644 (file)
@@ -170,7 +170,6 @@ static int yaffs_WriteChunkToNAND(struct yaffs_DeviceStruct *dev,
                return YAFFS_FAIL;
        }
 
                return YAFFS_FAIL;
        }
 
-       dev->nPageWrites++;
        return dev->writeChunkToNAND(dev, chunkInNAND, data, spare);
 }
 
        return dev->writeChunkToNAND(dev, chunkInNAND, data, spare);
 }
 
@@ -184,8 +183,6 @@ static int yaffs_ReadChunkFromNAND(struct yaffs_DeviceStruct *dev,
        int retVal;
        yaffs_Spare localSpare;
 
        int retVal;
        yaffs_Spare localSpare;
 
-       dev->nPageReads++;
-
        if (!spare && data) {
                /* If we don't have a real spare, then we use a local one. */
                /* Need this for the calculation of the ecc */
        if (!spare && data) {
                /* If we don't have a real spare, then we use a local one. */
                /* Need this for the calculation of the ecc */