removing test file
[yaffs/.git] / yaffs_guts.c
index 66014bb3f449d95b5a94aec02ff026c17c622c0c..88b02a3659cf7b51da032b6d0bf31ba7d2991dcc 100644 (file)
@@ -82,8 +82,8 @@ loff_t yaffs_GetFileSize(yaffs_Object *obj);
 
 static int yaffs_AllocateChunk(yaffs_Device *dev,int useReserve);
 
-#if YAFFS_PARANOID
-static int yaffs_CheckFileSanity(yaffs_Object *in)
+#ifdef YAFFS_PARANOID
+static int yaffs_CheckFileSanity(yaffs_Object *in);
 #else
 #define yaffs_CheckFileSanity(in)
 #endif
@@ -136,6 +136,39 @@ int yaffs_ReadChunkFromNAND(struct yaffs_DeviceStruct *dev,int chunkInNAND, __u8
        return retVal;
 }
 
+#ifdef YAFFS_PARANOID
+
+static int yaffs_CheckChunkErased(struct yaffs_DeviceStruct *dev,int chunkInNAND)
+{
+       static int init = 0;
+       static __u8 cmpbuf[YAFFS_BYTES_PER_CHUNK];
+       static __u8 data[YAFFS_BYTES_PER_CHUNK];
+       static __u8 spare[16];
+       
+       int retVal;
+       
+       retVal  = YAFFS_OK;
+       
+       dev->readChunkFromNAND(dev,chunkInNAND,data,(yaffs_Spare *)spare);
+       
+       
+       
+       if(!init)
+       {
+               memset(cmpbuf,0xff,YAFFS_BYTES_PER_CHUNK);
+               init = 1;
+       }
+       
+       if(memcmp(cmpbuf,data,YAFFS_BYTES_PER_CHUNK)) retVal = YAFFS_FAIL;
+       if(memcmp(cmpbuf,spare,16)) retVal = YAFFS_FAIL;
+       
+       return retVal;
+       
+}
+
+#endif
+
+
 int yaffs_EraseBlockInNAND(struct yaffs_DeviceStruct *dev,int blockInNAND)
 {
        return dev->eraseBlockInNAND(dev,blockInNAND);
@@ -1429,7 +1462,7 @@ static int yaffs_AllocateChunk(yaffs_Device *dev,int useReserve)
                }
 
 #ifdef YAFFS_PARANOID
-               if(yaffs_CheckChunkErased(retVal) == YAFFS_FAIL)
+               if(yaffs_CheckChunkErased(dev,retVal) == YAFFS_FAIL)
                {
                        T(("..................Trying to allocate non-erased page %d\n",retVal));
                }
@@ -1677,7 +1710,7 @@ int yaffs_FindChunkInFile(yaffs_Object *in,int chunkInInode,yaffs_Tags *tags)
                theChunk = tn->level0[chunkInInode & YAFFS_TNODES_LEVEL0_MASK] << dev->chunkGroupBits;
 
                // Now we need to do the shifting etc and search for it
-               for(i = 0,found = 0; i < dev->chunkGroupSize && !found; i++)
+               for(i = 0,found = 0; theChunk && i < dev->chunkGroupSize && !found; i++)
                {
                        yaffs_ReadChunkTagsFromNAND(dev,theChunk,tags);
                        if(tags->chunkId == chunkInInode &&
@@ -1719,7 +1752,7 @@ int yaffs_FindAndDeleteChunkInFile(yaffs_Object *in,int chunkInInode,yaffs_Tags
                theChunk = tn->level0[chunkInInode & YAFFS_TNODES_LEVEL0_MASK] << dev->chunkGroupBits;
     
                // Now we need to do the shifting etc and search for it
-               for(i = 0,found = 0; i < dev->chunkGroupSize && !found; i++)
+               for(i = 0,found = 0; theChunk && i < dev->chunkGroupSize && !found; i++)
                {
                        yaffs_ReadChunkTagsFromNAND(dev,theChunk,tags);
                        if(tags->chunkId == chunkInInode &&
@@ -1780,20 +1813,20 @@ static int yaffs_CheckFileSanity(yaffs_Object *in)
        
        for(chunk = 1; chunk <= nChunks; chunk++)
        {
-               tn = yaffs_FindLevel0Tnode(&in->variant.fileVariant, chunk);
+               tn = yaffs_FindLevel0Tnode(in->myDev,&in->variant.fileVariant, chunk);
     
                if(tn)
                {
     
-                       theChunk = tn->level0[chunk & YAFFS_TNODES_LEVEL0_MASK] << dev->chunkGroupBits;
+                       theChunk = tn->level0[chunk & YAFFS_TNODES_LEVEL0_MASK] << in->myDev->chunkGroupBits;
     
 
-                               yaffs_ReadChunkTagsFromNAND(theChunk,tags);
+                               yaffs_ReadChunkTagsFromNAND(in->myDev,theChunk,tags);
                                if(tags->chunkId == chunk &&
                                tags->objectId == in->objectId)
                                {
                                        // found it;
-                                       
+                               
                                }
                                else
                                {
@@ -2370,6 +2403,7 @@ int yaffs_FlushFile(yaffs_Object *in)
        int retVal;
        if(in->dirty)
        {
+               T(("flushing object header\n"));
                retVal = yaffs_UpdateObjectHeader(in,NULL);
        }
        else