Thanks. I had already fixed the defines. The problem that confused me was that the CONFIG_YAFFS_DISABLE_WRITE_VERIFY didn't optimize the reads. With the movement of the #ifndef CONFIG_YAFFS_DISABLE_WRITE_VERIFY like in your code the problem was solved. I believe that this is how the define CONFIG_YAFFS_DISABLE_WRITE_VERIFY is meant to work. //Daniel >-----Original Message----- >From: Reggiani, Adamo [mailto:areggiani@ferrari.it] >Sent: Monday, October 11, 2004 3:25 PM >To: Daniel Gustafsson; yaffs@stoneboat.aleph1.co.uk >Subject: RE: [Yaffs] Optimizing the number of reads and writes to flash > >Hi Daniel, >uncomment the define of this two labels in the makefile: >CONFIG_YAFFS_DISABLE_CHUNK_ERASED_CHECK >CONFIG_YAFFS_DISABLE_WRITE_VERIFY > >In this way you avoid to re-read every chunk before write (to >control if it's blank) and to re-read after a succesfull write. >I've also made a little modification of the >yaffs_WriteNewChunkToNAND, to completely avoid chunks read >after write (the original code avoids yaffs_VerifyCompare only). >Check the following code against cvs one. > > >static int yaffs_WriteNewChunkToNAND(struct yaffs_DeviceStruct >*dev, const __u8 *data, yaffs_Spare *spare,int useReserve) >{ > int chunk; > > int writeOk = 1; > int attempts = 0; > > do{ > chunk = yaffs_AllocateChunk(dev,useReserve); > > if(chunk >= 0) > { > > // First check this chunk is erased... >#ifndef CONFIG_YAFFS_DISABLE_CHUNK_ERASED_CHECK > writeOk = yaffs_CheckChunkErased(dev,chunk); >#endif > if(!writeOk) > { > T(YAFFS_TRACE_ERROR,(TSTR("**>> >yaffs chunk %d was not erased" TENDSTR),chunk)); > } > else > { > writeOk = >yaffs_WriteChunkToNAND(dev,chunk,data,spare); > } > attempts++; >#ifndef CONFIG_YAFFS_DISABLE_WRITE_VERIFY > if(writeOk) > { > unsigned char >rbData[YAFFS_BYTES_PER_CHUNK]; > yaffs_Spare rbSpare; > > // Readback & verify > // If verify fails, then delete >this chunk and try again > // To verify we compare >everything except the block and > // page status bytes. > // NB We check a raw read >without ECC correction applied > > >yaffs_ReadChunkFromNAND(dev,chunk,rbData,&rbSpare,0); > > >if(!yaffs_VerifyCompare(data,rbData,spare,&rbSpare)) > { > // Didn't verify > >T(YAFFS_TRACE_ERROR,(TSTR("**>> yaffs write verify failed on >chunk %d" TENDSTR), chunk)); > > writeOk = 0; > } > > } >#endif > if(writeOk) > { > // Copy the data into the write buffer. > // NB We do this at the end to >prevent duplicates in the case of a write error. > //Todo > >yaffs_HandleWriteChunkOk(dev,chunk,data,spare); > } > else > { > yaffs_HandleWriteChunkError(dev,chunk); > } > } > > } while(chunk >= 0 && ! writeOk); > > if(attempts > 1) > { > T(YAFFS_TRACE_ERROR,(TSTR("**>> yaffs write >required %d attempts" TENDSTR),attempts)); > dev->nRetriedWrites+= (attempts - 1); > } > > return chunk; >} > > >To reduce writes I think you must wait (or aid ;) for Yaffs2, >which will use a zero page rewrites to spare area and will >have generally better performance over Yaffs. >Look at www.aleph1.co.uk/yaffs/yaffs2.html > > >Regards >Adamo > > > >> -----Original Message----- >> From: yaffs-admin@stoneboat.aleph1.co.uk >> [mailto:yaffs-admin@stoneboat.aleph1.co.uk]On Behalf Of Daniel >> Gustafsson >> Sent: luned́ 11 ottobre 2004 14.47 >> To: yaffs@stoneboat.aleph1.co.uk >> Subject: [Yaffs] Optimizing the number of reads and writes to flash >> >> >> >> >> I am using yaffs/direct and I want to reduce the reads and >> writes towards >> the flash to an absolute minimum. I do not want any >> verifications of flash >> etc. I don not want to use ECC. >> >> I would greatly appreatiate any tips regarding the above >> issue but also how >> to reduce the footprint in RAM and size. >> >> Further more I am interested in some documetation what >> happens (reads/writes >> to flash) when performing some simple fs operations like >> read/write/open >> etc. >> >> >> I hope someone have the answers I am looking for, >> >> Best Regards >> Daniel Gustavsson >> >> >> _______________________________________________ >> yaffs mailing list >> yaffs@stoneboat.aleph1.co.uk >> http://stoneboat.aleph1.co.uk/cgi-bin/mailman/listinfo/yaffs >> > >