On Fri, 2011-01-07 at 19:02 +0000, Russell King - ARM Linux wrote: > On Fri, Jan 07, 2011 at 01:53:25PM -0500, Trond Myklebust wrote: > > I'd still like to keep the existing code for those architectures that > > don't have problems, since that allows us to send 32k READDIR requests > > instead of being limited to 4k. For large directories, that is a clear > > win. > > For the NOMMU case we will just go back to using a single page for > > storage (and 4k READDIR requests only). Should I just do the same for > > architectures like ARM and PARISC? > > I think you said that readdir reads via the vmalloc mapping of the > group of pages, but XDR writes to the individual pages. > > As I understand NFS, you receive a packet, you then have to use XDR > to unpack the data, which you presumably write into the set of > struct page *'s using kmap? No. The socket or RDMA layers place the data directly into the struct pages. We then unpack them in the XDR layer using the vmalloc mapping and place the resulting processed readdir data into the page cache. > Isn't a solution to have XDR write directly into the vmalloc mapping > rather than using struct page * and kmap? Unfortunately that isn't possible. :-( -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@xxxxxxxxxx www.netapp.com -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html