X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_tagscompat.c;h=98b7b0420a89b1d072ab7d163cdcf92ae7161eb1;hp=d7c0fd1144540320fef6ce62418fa885267c9d89;hb=14609dd277d69fdcddfb68bf465d06bb1cda82c7;hpb=363520161b021b7ac870c269064606e3f16feeeb diff --git a/yaffs_tagscompat.c b/yaffs_tagscompat.c index d7c0fd1..98b7b04 100644 --- a/yaffs_tagscompat.c +++ b/yaffs_tagscompat.c @@ -10,7 +10,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * - * $Id: yaffs_tagscompat.c,v 1.1 2004-11-03 08:14:07 charles Exp $ + * $Id: yaffs_tagscompat.c,v 1.2 2005-03-16 04:00:36 charles Exp $ */ #include "yaffs_guts.h" @@ -587,6 +587,13 @@ int yaffs_TagsCompatabilityWriteChunkWithTagsToNAND(yaffs_Device *dev,int chunkI tags.byteCount = eTags->byteCount; tags.serialNumber = eTags->serialNumber; +// NCB + if (!dev->useNANDECC && data) + { + yaffs_CalcECC(data,&spare); + } + +// /NCB yaffs_LoadTagsIntoSpare(&spare,&tags); } @@ -602,8 +609,21 @@ int yaffs_TagsCompatabilityReadChunkWithTagsFromNAND(yaffs_Device *dev,int chunk yaffs_Tags tags; yaffs_ECCResult eccResult; +// NCB + static yaffs_Spare spareFF; + static int init; + + if(!init) + { + memset(&spareFF,0xFF,sizeof(spareFF)); + init = 1; + } +// /NCB if(yaffs_ReadChunkFromNAND(dev,chunkInNAND,data,&spare,&eccResult,1)) { +// added NCB - eTags may be NULL + if (eTags) { + int deleted = (yaffs_CountBits(spare.pageStatus) < 7) ? 1 : 0; yaffs_GetTagsFromSpare(dev,&spare,&tags); @@ -616,6 +636,10 @@ int yaffs_TagsCompatabilityReadChunkWithTagsFromNAND(yaffs_Device *dev,int chunk eTags->eccResult = eccResult; eTags->blockBad = 0; // We're reading it therefore it is not a bad block +// NCB added 18/2/2005 + eTags->chunkUsed = (memcmp(&spareFF,&spare,sizeof(spareFF)) != 0) ? 1:0; + } + return YAFFS_OK; } else