Hi.
Charles Manning wrote:
> I have a mini-todo list that I am working through for the Linux stuff.
> Suggestions for additions/proioritsation welcome:
> 3) Clean up for kernel integration, and get into kernel.
The option names CONFIG_YAFFS_* and CONFIG_YAFFS2_* are messed up a bit.
> 5) Some other speed-ups
One more thing to look at is yaffs' vs. MTD's write verification.
IMHO, there is no reason to use both and the MTD does it better.
The YAFFS_DISABLE_WRITE_VERIFY could be default for linux.
Unfortunately, it does remove the yaffs_VerifyCompare() only,
while the yaffs_ReadChunkFromNAND() is still waste time.
I've attached a simple patch, but I'm in doubts about call to
yaffs_ReadChunkFromNAND() in the yaffs_DeleteChunk()
(yaffs_guts.c line 3238): it breaks compilation with MTD_NAND_VERIFY_WRITE...
--
Regards.
Timofei.
Index: yaffs_fs.c
===================================================================
RCS file: /home/aleph1/cvs/yaffs2/yaffs_fs.c,v
retrieving revision 1.5
diff -u -p -r1.5 yaffs_fs.c
--- yaffs2/yaffs_fs.c 29 Apr 2005 07:01:18 -0000 1.5
+++ yaffs2/yaffs_fs.c 14 Jul 2005 12:52:45 -0000
@@ -1341,7 +1341,8 @@ static struct super_block *yaffs_interna
T(YAFFS_TRACE_OS,("yaffs_read_super: Using yaffs%d\n",yaffsVersion));
T(YAFFS_TRACE_OS,("yaffs_read_super: %s block size %d\n", useRam ? "RAM" : "MTD",(int)(sb->s_blocksize)));
-#ifdef CONFIG_YAFFS_DISABLE_WRITE_VERIFY
+#if defined( CONFIG_YAFFS_DISABLE_WRITE_VERIFY ) && \
+ !defined( CONFIG_MTD_NAND_VERIFY_WRITE )
T(YAFFS_TRACE_OS,("yaffs: Write verification disabled. All guarantees null and void\n"));
#endif
Index: yaffs_tagscompat.c
===================================================================
RCS file: /home/aleph1/cvs/yaffs2/yaffs_tagscompat.c,v
retrieving revision 1.2
diff -u -p -r1.2 yaffs_tagscompat.c
--- yaffs2/yaffs_tagscompat.c 16 Mar 2005 04:00:36 -0000 1.2
+++ yaffs2/yaffs_tagscompat.c 14 Jul 2005 12:52:45 -0000
@@ -377,6 +377,7 @@ static int yaffs_WriteNewChunkToNAND(str
writeOk = yaffs_WriteChunkToNAND(dev,chunk,data,spare);
}
attempts++;
+#ifndef CONFIG_YAFFS_DISABLE_WRITE_VERIFY
if(writeOk)
{
// Readback & verify
@@ -386,7 +387,6 @@ static int yaffs_WriteNewChunkToNAND(str
// NB We check a raw read without ECC correction applied
yaffs_ReadChunkFromNAND(dev,chunk,rbData,&rbSpare,0);
-#ifndef CONFIG_YAFFS_DISABLE_WRITE_VERIFY
if(!yaffs_VerifyCompare(data,rbData,spare,&rbSpare))
{
// Didn't verify
@@ -394,9 +394,9 @@ static int yaffs_WriteNewChunkToNAND(str
writeOk = 0;
}
-#endif
}
+#endif
if(writeOk)
{
// Copy the data into the write buffer.