Thread (44 messages) 44 messages, 7 authors, 2011-01-10

Re: still nfs problems [Was: Linux 2.6.37-rc8]

From: James Bottomley <James.Bottomley@HansenPartnership.com>
Date: 2011-01-07 19:11:12
Also in: linux-arm-kernel, linux-nfs, lkml

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:
quoted
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.
Actually it's the other way around, but the point still stands.
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?

Isn't a solution to have XDR write directly into the vmalloc mapping
rather than using struct page * and kmap?
So, unfortuantely, I looked at doing this and we can't.  the ->readdir()
call takes an array of pages, not a kernel virtual address of the pages,
so there's no way to tell it to use a different mapping from the usual
kernel one on them.

On the other hand, the xdr routines, since they take the pages anyway,
could use a scatterlist approach to writing through the kernel mapping
instead of using vmap ... we have all the machinery for this in
lib/scatterlist.c ... it's not designed for this case, since it's
designed to allow arbitrary linear reads and writes on a block
scatterlist, but the principle is the same ... it looks like it would be
rather a big patch, though ... 

James

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help