On Friday 10 December 2004 11:55, Thomas Gleixner wrote: > On Thu, 2004-12-09 at 21:10 +0000, Nick Bane wrote: > > That is precisely what I do and I comment out the MTD whinge. > > It is clearly important that SOMEONE does the ECC and it is a > > mild pity that the MTD layer assumes that only it is competant to do so. > > It's not a pity. It's correct. If you do software ECC, fine. If you have > hardware ECC then it _CAN_ only be done in the MTD layer. The filesystem > layer does not know anything about the available hardware. So it makes > totaly sense that ECC is done in the MTD/NAND layer and nowhere else. > > A filesystem is a filesystem and is not competent to fiddle around with > hardware. I know that there are OS targets for YAFFS where YAFFS has to > do everything, but MTD does it the right way. I might argue the latter point here. I believe the ECC byte ordering calculated by SJHill's nand_ecc.c is wrong. yaffs_ecc.c can calculate this ECC order or the SmartMedia "correct" order. yaffs_ecc.c is also slightly faster than nand_ecc.c ;-). I don't think I have a gripe with the ECC stuff, it's the write verification that gets me. > > > It is probably that yaffs should get the MTD layer to do its ecc > > eventually as standard. > > Can you please explain this statement to somebody who's native language > is German ? > > What do you mean ? > Fix YAFFS or hack MTD ? From my understanding this is only a configuration issue. YAFFS can be build with CONFIG_YAFFS_USE_NAND_ECC which means yaffs won't do ECC - it lets mtd do all ECC. This is, IMHO, the best way to do things with Linux - particularly if there are other non-yaffs users of the NAND. With non-Linux usage, I recommend using yaffs_ecc.c if software ECC is required. Where things do break down a bit is with mkyaffs which does calculate ECC. You need to be careful to use a consistent ECC strategy.