X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_guts.c;h=1f36cea86dd0ec7b0908299a7f444545e23c192c;hp=eafbaa996e57054305f4104fa6c8003a00d26f9d;hb=600cb55e4d937dd1f61d596b49a58ef11ddc01c9;hpb=64239466cac1b316650213aaa07c92f57c3e7861 diff --git a/yaffs_guts.c b/yaffs_guts.c index eafbaa9..1f36cea 100644 --- a/yaffs_guts.c +++ b/yaffs_guts.c @@ -13,7 +13,7 @@ */ const char *yaffs_guts_c_version = - "$Id: yaffs_guts.c,v 1.20 2005-10-07 02:46:49 charles Exp $"; + "$Id: yaffs_guts.c,v 1.23 2005-11-07 07:19:34 charles Exp $"; #include "yportenv.h" @@ -1757,6 +1757,13 @@ static int yaffs_InitialiseBlocks(yaffs_Device * dev, int nBlocks) /* Set up dynamic blockinfo stuff. */ dev->chunkBitmapStride = (dev->nChunksPerBlock + 7) / 8; dev->chunkBits = YMALLOC(dev->chunkBitmapStride * nBlocks); + if(!dev->chunkBits){ + dev->chunkBits = YMALLOC_ALT(dev->chunkBitmapStride * nBlocks); + dev->chunkBitsAlt = 1; + } + else + dev->chunkBitsAlt = 0; + if (dev->blockInfo && dev->chunkBits) { memset(dev->blockInfo, 0, nBlocks * sizeof(yaffs_BlockInfo)); memset(dev->chunkBits, 0, dev->chunkBitmapStride * nBlocks); @@ -1776,7 +1783,12 @@ static void yaffs_DeinitialiseBlocks(yaffs_Device * dev) dev->blockInfoAlt = 0; dev->blockInfo = NULL; - YFREE(dev->chunkBits); + + if(dev->chunkBitsAlt) + YFREE_ALT(dev->chunkBits); + else + YFREE(dev->chunkBits); + dev->chunkBitsAlt = 0; dev->chunkBits = NULL; } @@ -2648,14 +2660,6 @@ void yaffs_DeleteChunk(yaffs_Device * dev, int chunkId, int markNAND, int lyn) if (markNAND && bi->blockState != YAFFS_BLOCK_STATE_COLLECTING && !dev->isYaffs2) { -#ifdef CONFIG_MTD_NAND_VERIFY_WRITE - - /* Read data before write, to ensure correct ecc - * if we're using MTD verification under Linux - */ - yaffs_ReadChunkFromNAND(dev, chunkId, NULL, &spare, 0); -#endif - yaffs_InitialiseTags(&tags); tags.chunkDeleted = 1; @@ -5321,7 +5325,7 @@ int yaffs_GutsInitialise(yaffs_Device * dev) int extraBits; int nBlocks; - T(YAFFS_TRACE_ALWAYS, (TSTR("yaffs: yaffs_GutsInitialise()" TENDSTR))); + T(YAFFS_TRACE_TRACING, (TSTR("yaffs: yaffs_GutsInitialise()" TENDSTR))); /* Check stuff that must be set */ @@ -5524,7 +5528,7 @@ int yaffs_GutsInitialise(yaffs_Device * dev) yaffs_VerifyFreeChunks(dev); - T(YAFFS_TRACE_ALWAYS, + T(YAFFS_TRACE_TRACING, (TSTR("yaffs: yaffs_GutsInitialise() done.\n" TENDSTR))); return YAFFS_OK;