[Reposting this since some people did not get the attached patch] This patch (based on Trond's nfs-2.6 git tree) adds the hooks need to allow NFS to use the generic filesystem caching facility FS-Cache. Caching is done on a per mount bases. To activate caching, the 'fsc' flag is need as a mount option. Ex: mount -o fsc server:/export /mnt (binary and source rpms as well as the actual patch are available at http://people.redhat.com/steved/cachefs/util-linux/) NFS uses the cache on a readonly bases; Meaning only reads are caches not writes. But this *does not* mean filesystems have to be mounted read only. Filesystems are mounted read/write but only data from reads will be cached. When a file is opened with either RW or WR bits, the caching will be turned off (see nfs_open for the details). The reason for read only is became quite apparent that keeping the cache coherent while jugging both reads and writes is pretty hard. So it was decided to start with a read only implementation and then move on to a read/write implementation in the future... There are still a few rough spots in this patch. One being the sysctl variables that show what, if any, caching is being done need to be rolled into NFS I/O metrics code that recently went in. The second one being, what David termed as, NFS aliasing. The way NFS manages its super blocks would cause double caching since the cookies returned by the cache would not be unique. We got around this problem by making each nfs mount have unique 'fsctag' which would be used to generate the caching cookie. The default fsctag value is the mount point but it also can be set on the command line (which is undocumented at this point since its not clear we really want to do this). Unfortunately having the mount command passed the kernel a string turned out to a bit difficult since NFS used a binary interface (something that will hopefully change this summer). So David came up with the idea (not too surprising) of using the keyrings to passed down the string which did work very well... But as I said, we have every intending of change the binary interface into an ascii one and when that happens, this interface will change. Finally there still needs to be some work on mmapped pages. Its not clear NFS is used the cache as well as it could when pages are mmapped. I'm still investigating... Now I'm sure Trond will find several more rough spots... ;-) but these are all of the ones I know about.... steved.