• J. Bruce Fields's avatar
    nfsd4: turn off zero-copy-read in exotic cases · b0e35fda
    J. Bruce Fields authored
    We currently allow only one read per compound, with operations before
    and after whose responses will require no more than about a page to
    encode.
    
    While we don't expect clients to violate those limits any time soon,
    this limitation isn't really condoned by the spec, so to future proof
    the server we should lift the limitation.
    
    At the same time we'd like to continue to support zero-copy reads.
    
    Supporting multiple zero-copy-reads per compound would require a new
    data structure to replace struct xdr_buf, which can represent only one
    set of included pages.
    
    So for now we plan to modify encode_read() to support either zero-copy
    or non-zero-copy reads, and use some heuristics at the start of the
    compound processing to decide whether a zero-copy read will work.
    
    This will allow us to support more exotic compounds without introducing
    a performance regression in the normal case.
    
    Later patches handle those "exotic compounds", this one just makes sure
    zero-copy is turned off in those cases.
    Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
    b0e35fda
nfs4xdr.c 96.2 KB