From fe5f823991056c82467e5ad63da321b4f7012afd Mon Sep 17 00:00:00 2001 From: Chuck Lever Date: Mon, 2 Nov 2026 16:33:00 -0500 Subject: [PATCH] 4.0 server tests: remove RPLY14 RPLY14 sends a CREATE, then resends it twice with the same XID on the same TCP connection and expects NFS4_OK each time. The other RPLY tests exercise the per-state-owner reply cache that RFC 7530 Section 9.1.7 requires, or replay an idempotent LOOKUP. RPLY14 alone depends on an XID-based duplicate request cache, which RFC 7530 does not specify. Section 3.1.1 also forbids an NFSv4.0 client from retrying a request unless the transport connection has been broken. A recent NFSD change drops a retransmission that arrives on the connection that carried the original request, so RPLY14 now fails against NFSD. Reconnecting before the replay does not rescue the test. NFSD may evict a DRC entry once the client has acknowledged the cached reply, so the replayed CREATE executes a second time and fails with NFS4ERR_EXIST. Remove RPLY14 and record its code as retired. Signed-off-by: Chuck Lever --- nfs4.0/servertests/st_replay.py | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/nfs4.0/servertests/st_replay.py b/nfs4.0/servertests/st_replay.py index 48e5363..7f490e3 100644 --- a/nfs4.0/servertests/st_replay.py +++ b/nfs4.0/servertests/st_replay.py @@ -250,14 +250,4 @@ def testOpenConfirmFail(t, env): ops += [op.open_confirm(stateid, c.get_seqid(t.word())+1)] _replay(env, c, ops, NFS4ERR_BAD_SEQID) -def testMkdirReplay(t, env): - """REPLAY a succesful directory CREATE - - FLAGS: replay all - DEPEND: MKDIR - CODE: RPLY14 - """ - c = env.c1 - c.init_connection() - ops = c.go_home() + [op.create(createtype4(NF4DIR), t.word(), {})] - _replay(env, c, ops) +# RPLY14 permanently retired, please do not reuse