• Trond Myklebust's avatar
    [PATCH] Add helper routines for fixing up page alignment on xdr_buf · deb86db1
    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
xdr.c 13.4 KB