*/
//yaffs_guts.c
-const char *yaffs_guts_c_version="$Id: yaffs_guts.c,v 1.17 2003-01-17 04:19:08 charles Exp $";
+const char *yaffs_guts_c_version="$Id: yaffs_guts.c,v 1.20 2003-01-31 03:30:33 charles Exp $";
#include "yportenv.h"
{
if(tn->level0[i])
{
-
theChunk = (tn->level0[i] << in->myDev->chunkGroupBits);
+ T(YAFFS_TRACE_SCAN,(TSTR("soft delete tch %d cgb %d chunk %d" TENDSTR),
+ tn->level0[i],in->myDev->chunkGroupBits,theChunk));
+
theBlock = yaffs_GetBlockInfo(in->myDev, theChunk/in->myDev->nChunksPerBlock);
if(theBlock)
{
}
else
{
+ iterations = dev->endBlock - dev->startBlock + 1;
iterations = iterations / 16;
if(iterations > 200)
{
dev->allocationPage = 0;
}
- if(!useReserve && dev->nErasedBlocks <= YAFFS_RESERVED_BLOCKS)
+ if(!useReserve && dev->nErasedBlocks <= dev->nReservedBlocks)
{
// Not enough space to allocate unless we're allowed to use the reserve.
return -1;
static int yaffs_CheckSpaceForChunkCache(yaffs_Device *dev)
{
- return (dev->nErasedBlocks >= YAFFS_RESERVED_BLOCKS);
+ return (dev->nErasedBlocks >= dev->nReservedBlocks);
}
//yaffs_DoUnlinkedFileDeletion(dev);
- if(dev->nErasedBlocks <= (YAFFS_RESERVED_BLOCKS + YAFFS_GARBAGE_COLLECT_LOW_WATER))
+ if(dev->nErasedBlocks <= (dev->nReservedBlocks + YAFFS_GARBAGE_COLLECT_LOW_WATER))
{
aggressive = 1;
}
//yaffs_DoUnlinkedFileDeletion(dev);
- if(dev->nErasedBlocks <= (YAFFS_RESERVED_BLOCKS + 1))
+ if(dev->nErasedBlocks <= (dev->nReservedBlocks + 1))
{
aggressive = 1;
}
int extraBits;
int nBlocks;
+ if( dev->nBytesPerChunk != YAFFS_BYTES_PER_CHUNK ||
+
+ dev->nChunksPerBlock < 2 ||
+ dev->nReservedBlocks < 2 ||
+ dev->startBlock <= 0 ||
+ dev->endBlock <= 0 ||
+ dev->endBlock <= (dev->startBlock + dev->nReservedBlocks)
+ )
+ {
+ //these parameters must be set before stating yaffs
+ // Other parameters startBlock,
+ return YAFFS_FAIL;
+ }
+
if(!yaffs_CheckStructures())
}
dev->chunkGroupSize = 1 << dev->chunkGroupBits;
- // Stuff to be taken out later
- dev->nBytesPerChunk = YAFFS_BYTES_PER_CHUNK;
- dev->nChunksPerBlock = YAFFS_CHUNKS_PER_BLOCK;
// More device initialisation
yaffs_DeinitialiseBlocks(dev);
yaffs_DeinitialiseTnodes(dev);
yaffs_DeinitialiseObjects(dev);
+ YFREE(dev->localBuffer);
}
}