diff --git a/patches.suse/NFSD-Reset-cb_seq_status-after-NFS4ERR_DELAY.patch b/patches.suse/NFSD-Reset-cb_seq_status-after-NFS4ERR_DELAY.patch new file mode 100644 index 0000000..b4f76fd --- /dev/null +++ b/patches.suse/NFSD-Reset-cb_seq_status-after-NFS4ERR_DELAY.patch @@ -0,0 +1,40 @@ +From: Chuck Lever +Date: Fri, 26 Jan 2024 12:45:17 -0500 +Subject: [PATCH] NFSD: Reset cb_seq_status after NFS4ERR_DELAY +Git-commit: 961b4b5e86bf56a2e4b567f81682defa5cba957e +Patch-mainline: v6.9-rc1 +References: git-fixes + +I noticed that once an NFSv4.1 callback operation gets a +NFS4ERR_DELAY status on CB_SEQUENCE and then the connection is lost, +the callback client loops, resending it indefinitely. + +The switch arm in nfsd4_cb_sequence_done() that handles +NFS4ERR_DELAY uses rpc_restart_call() to rearm the RPC state machine +for the retransmit, but that path does not call the rpc_prepare_call +callback again. Thus cb_seq_status is set to -10008 by the first +NFS4ERR_DELAY result, but is never set back to 1 for the retransmits. + +nfsd4_cb_sequence_done() thinks it's getting nothing but a +long series of CB_SEQUENCE NFS4ERR_DELAY replies. + +Fixes: 7ba6cad6c88f ("nfsd: New helper nfsd4_cb_sequence_done() for processing more cb errors") +Reviewed-by: Jeff Layton +Reviewed-by: Benjamin Coddington +Signed-off-by: Chuck Lever +Acked-by: NeilBrown + +--- + fs/nfsd/nfs4callback.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/fs/nfsd/nfs4callback.c ++++ b/fs/nfsd/nfs4callback.c +@@ -1131,6 +1131,7 @@ static bool nfsd4_cb_sequence_done(struc + ret = false; + break; + case -NFS4ERR_DELAY: ++ cb->cb_seq_status = 1; + if (!rpc_restart_call(task)) + goto out; + diff --git a/series.conf b/series.conf index 4e74986..5fa5a4d 100644 --- a/series.conf +++ b/series.conf @@ -45592,6 +45592,7 @@ patches.suse/NFSD-change-LISTXATTRS-cookie-encoding-to-big-endian.patch patches.suse/NFSD-fix-LISTXATTRS-returning-a-short-list-with-eof-.patch patches.suse/NFSD-fix-LISTXATTRS-returning-more-bytes-than-maxcou.patch + patches.suse/NFSD-Reset-cb_seq_status-after-NFS4ERR_DELAY.patch patches.suse/doc-guide-kernel-doc-tell-about-object-like-macros.patch patches.suse/wifi-b43-Stop-wake-correct-queue-in-DMA-Tx-path-when.patch patches.suse/wifi-b43-Stop-wake-correct-queue-in-PIO-Tx-path-when.patch