• Chuck Lever's avatar
    NFS: Zero-stateid SETATTR should first return delegation · a6a2cf4d
    Chuck Lever authored
    [ Upstream commit 644c9f40 ]
    
    If a write delegation isn't available, the Linux NFS client uses
    a zero-stateid when performing a SETATTR.
    
    NFSv4.0 provides no mechanism for an NFS server to match such a
    request to a particular client. It recalls all delegations for that
    file, even delegations held by the client issuing the request. If
    that client happens to hold a read delegation, the server will
    recall it immediately, resulting in an NFS4ERR_DELAY/CB_RECALL/
    DELEGRETURN sequence.
    
    Optimize out this pipeline bubble by having the client return any
    delegations it may hold on a file before it issues a
    SETATTR(zero-stateid) on that file.
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    a6a2cf4d
nfs4proc.c 263 KB