X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=yaffs_guts.c;h=9d9dc3e8e88cd25260ee3a2dc67af72b41aac13c;hb=c668bb26fb948b3dba6a6000ac2334d833e67a80;hp=8198e419f0da720bd2fac3fd76534d2a1ed9d17b;hpb=e491e7735f8909e10d01a9762eae8bca2659b1b4;p=yaffs%2F.git diff --git a/yaffs_guts.c b/yaffs_guts.c index 8198e41..9d9dc3e 100644 --- a/yaffs_guts.c +++ b/yaffs_guts.c @@ -14,7 +14,7 @@ */ //yaffs_guts.c -const char *yaffs_guts_c_version="$Id: yaffs_guts.c,v 1.19 2003-01-31 00:57:34 charles Exp $"; +const char *yaffs_guts_c_version="$Id: yaffs_guts.c,v 1.21 2003-02-03 18:33:28 charles Exp $"; #include "yportenv.h" @@ -1853,7 +1853,7 @@ int yaffs_RenameObject(yaffs_Object *oldDir, const char *oldName, yaffs_Object * yaffs_Object *obj; int force = 0; -#ifdef YAFFS_CASE_INSENSITIVE +#ifdef CONFIG_YAFFS_CASE_INSENSITIVE // Special case for WinCE. // While look-up is case insensitive, the name isn't. // THerefore we might want to change x.txt to X.txt @@ -2142,7 +2142,7 @@ static int yaffs_AllocateChunk(yaffs_Device *dev,int useReserve) 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; @@ -2184,7 +2184,7 @@ static int yaffs_AllocateChunk(yaffs_Device *dev,int useReserve) static int yaffs_CheckSpaceForChunkCache(yaffs_Device *dev) { - return (dev->nErasedBlocks >= YAFFS_RESERVED_BLOCKS); + return (dev->nErasedBlocks >= dev->nReservedBlocks); } @@ -2365,7 +2365,7 @@ static int yaffs_CheckGarbageCollection(yaffs_Device *dev) //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; } @@ -2405,7 +2405,7 @@ static int yaffs_CheckGarbageCollection(yaffs_Device *dev) //yaffs_DoUnlinkedFileDeletion(dev); - if(dev->nErasedBlocks <= (YAFFS_RESERVED_BLOCKS + 1)) + if(dev->nErasedBlocks <= (dev->nReservedBlocks + 1)) { aggressive = 1; } @@ -4602,6 +4602,20 @@ int yaffs_GutsInitialise(yaffs_Device *dev) 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()) @@ -4658,9 +4672,6 @@ int yaffs_GutsInitialise(yaffs_Device *dev) } 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