> Hello Charles, > > On 3/4/07, Charles Manning wrote: >> > a) YAFFS2 is not in the mainline, thus gaining less testing/support >> > from the open-source community >> This is possibly true, but I don't think that it ncessarily follows. >> Just >> because stuff is in the mainline does not mean it is well tested. I have >> found more than one driver in the mainline that got broken due to a >> kernel >> change impacting on a driver. > > Yes, that's certainly true. Still if yaffs2 were in mainline, more > people would have been using/testing it. That actually was my point. > >> > d) YAFFS2 is likely to be slower with bitbanging NAND due to hard OOB >> usage >> Can you explain that a bit more. I don't understand what point you are >> trying >> to make. > > YAFFS2 uses OOB area more intensively than JFFS2, so in order to > read/write things it issues more NAND commands generally, which turns > to be a performance drop for GPIO/bitbanging NAND controller > emulation. This should not be the case. YAFFS2 writes NAND (data + tags) as a single operation. The driver should be performing a single write to NAND. If not then something is broken. With JFFS2 you still need to write the the ECC to oob, so both YAFFS and JFFS2 should not require a different number of commands for a nand write operation. The only material difference is that YAFFS needs more oob bytes transfered as part of the write operation. ie: Disregarding deeper fs issues and just focussing on the NAND writing: JFFS2 write CMD: Set up data write copy data into buffer CMD: Set up oob write copy ecc into buffer CMD: program page YAFFS2 write CMD: Set up data write copy data into buffer CMD: Set up oob write copy ecc + tags into buffer CMD: program page They only differ in the copying of the tags. The actual commands are unchanged. Since the tags are somewhat equivalent to JFFS2 "meta-data", JFFS2 is storing it anyway - just in a different place. > >> > f) YAFFS doesn't implement any wear levelling AFAIK which is a minus. > >> If is true that YAFFS does not do any explicit wear levelling. Instead, >> a >> degree of wear levelling is a side-effect of how free blocks are >> managed. >> Although the code and motivation is entirely different, the result is >> similar >> to how the SmartMedia/SD free is managed but the pool is typically far >> larger >> for YAFFS meaning that the wear levelling is far better. >> >> To explain that last statement a bit: In a FATfs on SmartMedia/SD, >> typically >> 1000 out of 1024 blocks are formatted and in use and the free pool is >> only 24 >> blocks (reduced by the number of bad blocks) this makes the pool >> relatively >> small meaning that the averaging effect is only scattered over a few >> blocks >> at a time. In other words: a formatted block is "in use" whether it >> holds >> data or not. In YAFFS, blocks that do not contain useful data are unused >> and >> in the free pool. This means that the free pool is typically far bigger >> and >> the averaging effect is better. > > Thanks for the explanation, I must admit myself being wrong here. That's fine. We're all learning stuff all the time :-). The infrequent mistake is the very small price we pay for your valuable contribution -- CHarles