-
Trond Myklebust authored
In order to speed up NFS reads, we attempt to copy directly from skbuffs into the pagecache pages. As we cannot do XDR decoding in the soft interrupts, we attempt to estimate the size of the RPC header (+ attributes,...) that will precede the actual data that goes in the pagecache. If we get the estimate wrong, the XDR decode routines perform a realignment of the data into the pagecache. In the existing code, we do a multi-page kmap() from the xdr_buf into an iovec array, in order to do the shift. The following patch adds tools for doing the realigment without going through the iovec array (and without having to do the deadlock-prone multi-page kmap()). It also adds the 2 helper routines xdr_read_pages()/xdr_write_pages() which will be needed for NFSv4 reads/writes in order to add pre/post operation GETATTR calls.
deb86db1