liyinshu has uploaded this change for review.

View Change

Check whether request is a real replay to warn kernel's bug

If client use kernel 4.14.81 in https://kernel.org/, sometimes
different requests share the same slot and sequenceid, ganesha
thinks the latter request is a replay of former request, so
return the response of the former request as the reply of the
latter request. It can cause client hangs forever. For example,
OP_SEQUENCE comes first, and then comes OP_GETATTR which share
the same slot and sequenceid with the former OP_SEQUENCE, and
ganesha reply NFS4ERR_RETRY_UNCACHED_REP. Then nfs-client will
retry send the OP_GETATTR with the same slot and sequenceid,
and ganesha still reply NFS4ERR_RETRY_UNCACHED_REP, ..., this
will last forever. This bug, i.e. different requests share the
same slot and sequenceid, disappers in kernel 5.4.143, fixed by
some previous version.

Change-Id: I9108d3bbe5310c3eaf0c1d600668a18b9dabbf76
Signed-off-by: liyinshu <liyinshu@bytedance.com>
---
M src/Protocols/NFS/nfs4_Compound.c
M src/Protocols/NFS/nfs4_op_sequence.c
M src/include/nfs_proto_functions.h
M src/include/sal_data.h
4 files changed, 169 insertions(+), 2 deletions(-)

git pull ssh://review.gerrithub.io:29418/ffilz/nfs-ganesha refs/changes/21/542321/1

To view, visit change 542321. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: ffilz/nfs-ganesha
Gerrit-Branch: next
Gerrit-Change-Id: I9108d3bbe5310c3eaf0c1d600668a18b9dabbf76
Gerrit-Change-Number: 542321
Gerrit-PatchSet: 1
Gerrit-Owner: liyinshu <liyinshu@bytedance.com>
Gerrit-MessageType: newchange