• Chuck Lever's avatar
    NFSD: Fix handling of oversized NFSv4 COMPOUND requests · 7518a3dc
    Chuck Lever authored
    If an NFS server returns NFS4ERR_RESOURCE on the first operation in
    an NFSv4 COMPOUND, there's no way for a client to know where the
    problem is and then simplify the compound to make forward progress.
    
    So instead, make NFSD process as many operations in an oversized
    COMPOUND as it can and then return NFS4ERR_RESOURCE on the first
    operation it did not process.
    
    pynfs NFSv4.0 COMP6 exercises this case, but checks only for the
    COMPOUND status code, not whether the server has processed any
    of the operations.
    
    pynfs NFSv4.1 SEQ6 and SEQ7 exercise the NFSv4.1 case, which detects
    too many operations per COMPOUND by checking against the limits
    negotiated when the session was created.
    Suggested-by: default avatarBruce Fields <bfields@fieldses.org>
    Fixes: 0078117c ("nfsd: return RESOURCE not GARBAGE_ARGS on too many ops")
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    7518a3dc
nfs4xdr.c 140 KB