• Andy Adamson's avatar
    nfsd41: DRC save, restore, and clear functions · 074fe897
    Andy Adamson authored
    Cache all the result pages, including the rpc header in rq_respages[0],
    for a request in the slot table cache entry.
    
    Cache the statp pointer from nfsd_dispatch which points into rq_respages[0]
    just past the rpc header. When setting a cache entry, calculate and save the
    length of the nfs data minus the rpc header for rq_respages[0].
    
    When replaying a cache entry, replace the cached rpc header with the
    replayed request rpc result header, unless there is not enough room in the
    cached results first page. In that case, use the cached rpc header.
    
    The sessions fore channel maxresponse size cached is set to NFSD_PAGES_PER_SLOT
    * PAGE_SIZE. For compounds we are cacheing with operations such as READDIR
    that use the xdr_buf->pages to hold data, we choose to cache the extra page of
    data rather than copying data from xdr_buf->pages into the xdr_buf->head page.
    
    [nfsd41: limit cache to maxresponsesize_cached]
    [nfsd41: mv nfsd4_set_statp under CONFIG_NFSD_V4_1]
    [nfsd41: rename nfsd4_move_pages]
    [nfsd41: rename page_no variable]
    [nfsd41: rename nfsd4_set_cache_entry]
    [nfsd41: fix nfsd41_copy_replay_data comment]
    [nfsd41: add to nfsd4_set_cache_entry]
    Signed-off-by: default avatarAndy Adamson <andros@netapp.com>
    Signed-off-by: default avatarBenny Halevy <bhalevy@panasas.com>
    Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
    074fe897
nfs4state.c 99.8 KB