• Trond Myklebust's avatar
    NFSv4.1: Fix up replays of interrupted requests · 3be0f80b
    Trond Myklebust authored
    If the previous request on a slot was interrupted before it was
    processed by the server, then our slot sequence number may be out of whack,
    and so we try the next operation using the old sequence number.
    
    The problem with this, is that not all servers check to see that the
    client is replaying the same operations as previously when they decide
    to go to the replay cache, and so instead of the expected error of
    NFS4ERR_SEQ_FALSE_RETRY, we get a replay of the old reply, which could
    (if the operations match up) be mistaken by the client for a new reply.
    
    To fix this, we attempt to send a COMPOUND containing only the SEQUENCE op
    in order to resync our slot sequence number.
    
    Cc: Olga Kornievskaia <olga.kornievskaia@gmail.com>
    [olga.kornievskaia@gmail.com: fix an Oops]
    Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
    3be0f80b
nfs4_fs.h 19 KB