Hi folks, I've been doing some work with very large MTD devices (many GB) and also with improving YAFFS2 performance on those. There are some MTD patches which will be forthcoming for 64-bit MTD (for which I needed to use a few do_div operations as YAFFS2/MTD code can't use convenient shifts) but in the meantime, here are some notes that I have on YAFFS2 - these are from my experiences on a custom backport to Montavista Linux Pro 3.1 (kernel 2.4.20). None of this is meant to criticise - I think YAFFS2 is amasingly cool - but here are some comments based on a particular effort. * YAFFS2 should not use any shortopcaches when on Linux. It seems to make little difference to performance (only negative). * YAFFS2 memory allocation using kmalloc does not work on very large devices and needs to use vmalloc instead in those cases (>2GB devices). The lack of checking for success proves to be a problem. * YAFFS2 has various internal usage of types which makes it difficult to scale to >2GB devices. We have to divide up into multiple partitions. * Andre Renaud latched onto a problem which I then rediscovered in performance testing. Having chunk groups of 16 reduces performance by at least 50% but in practice can be much higher. By applying a version of his patch, I was able ot reduce read time for a 50MB file from 27 seconds to around 15 seconds and have achieved sustained reads at 22.2Mbit/s on multi-GB devices reading many hundred MBs. * YAFFS2 makes use of some additional reads and memcpy's which don't seem entirely necessary - by combining and changing some of the logic it looks like we could get another 10% performance gain. Jon.