]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
NFSv4.1: Don't decrease the value of seq_nr_highest_sent
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Tue, 12 Jul 2022 13:16:04 +0000 (09:16 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Aug 2022 09:37:53 +0000 (11:37 +0200)
commit f07a5d2427fc113dc50c5c818eba8929bc27b8ca upstream.

When we're trying to figure out what the server may or may not have seen
in terms of request numbers, do not assume that requests with a larger
number were missed, just because we saw a reply to a request with a
smaller number.

Fixes: 3453d5708b33 ("NFSv4.1: Avoid false retries when RPC calls are interrupted")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/nfs/nfs4proc.c

index b22da4e3165b4b7869f85a36ba9b0b07449d3bee..db4ecb93f8a33f408ba01c30ba030f53e93eeb76 100644 (file)
@@ -790,10 +790,9 @@ static void nfs4_slot_sequence_record_sent(struct nfs4_slot *slot,
        if ((s32)(seqnr - slot->seq_nr_highest_sent) > 0)
                slot->seq_nr_highest_sent = seqnr;
 }
-static void nfs4_slot_sequence_acked(struct nfs4_slot *slot,
-               u32 seqnr)
+static void nfs4_slot_sequence_acked(struct nfs4_slot *slot, u32 seqnr)
 {
-       slot->seq_nr_highest_sent = seqnr;
+       nfs4_slot_sequence_record_sent(slot, seqnr);
        slot->seq_nr_last_acked = seqnr;
 }