projects
/
yaffs2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add cache write through and some benign fixes
[yaffs2.git]
/
yaffs_tagscompat.c
diff --git
a/yaffs_tagscompat.c
b/yaffs_tagscompat.c
index d7c0fd1144540320fef6ce62418fa885267c9d89..98b7b0420a89b1d072ab7d163cdcf92ae7161eb1 100644
(file)
--- 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.
*
* 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"
*/
#include "yaffs_guts.h"
@@
-587,6
+587,13
@@
int yaffs_TagsCompatabilityWriteChunkWithTagsToNAND(yaffs_Device *dev,int chunkI
tags.byteCount = eTags->byteCount;
tags.serialNumber = eTags->serialNumber;
tags.byteCount = eTags->byteCount;
tags.serialNumber = eTags->serialNumber;
+// NCB
+ if (!dev->useNANDECC && data)
+ {
+ yaffs_CalcECC(data,&spare);
+ }
+
+// /NCB
yaffs_LoadTagsIntoSpare(&spare,&tags);
}
yaffs_LoadTagsIntoSpare(&spare,&tags);
}
@@
-602,8
+609,21
@@
int yaffs_TagsCompatabilityReadChunkWithTagsFromNAND(yaffs_Device *dev,int chunk
yaffs_Tags tags;
yaffs_ECCResult eccResult;
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))
{
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);
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
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
return YAFFS_OK;
}
else