* [PATCH] sunrpc: start cache request seqno at 1 to fix netlink GET_REQS
@ 2026-04-11 21:12 Jeff Layton
2026-04-13 17:24 ` Chuck Lever
0 siblings, 1 reply; 2+ messages in thread
From: Jeff Layton @ 2026-04-11 21:12 UTC (permalink / raw)
To: Chuck Lever, NeilBrown, Olga Kornievskaia, Dai Ngo, Tom Talpey,
Trond Myklebust, Anna Schumaker
Cc: linux-nfs, linux-kernel, Jeff Layton
sunrpc_cache_requests_snapshot() filters requests with
crq->seqno <= min_seqno. The min_seqno for the first netlink
dump call is cb->args[0] which is 0. Since next_seqno was
initialized to 0, the very first cache request got seqno=0
and was silently skipped by the snapshot (0 <= 0 is true).
This caused netlink-based GET_REQS to return 0 pending requests
even when a request was queued, preventing mountd from resolving
cache entries (particularly expkey/nfsd.fh). The unresolved
CACHE_PENDING state blocked all further notifications for the
entry, leading to permanent NFS4ERR_DELAY hangs.
Start next_seqno at 1 so all requests have seqno >= 1 and pass
the snapshot filter when min_seqno is 0.
Fixes: facc4e3c8042 ("sunrpc: split cache_detail queue into request and reader lists")
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
I started hitting a persistent hang in mountd upcalls just after reboot,
and this turns out to be the cause. It's probably best to fold this into
the patch in the Fixes: line.
---
net/sunrpc/cache.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c
index d477b19dbfa1..305c6e67f052 100644
--- a/net/sunrpc/cache.c
+++ b/net/sunrpc/cache.c
@@ -405,7 +405,7 @@ void sunrpc_init_cache_detail(struct cache_detail *cd)
INIT_LIST_HEAD(&cd->readers);
spin_lock_init(&cd->queue_lock);
init_waitqueue_head(&cd->queue_wait);
- cd->next_seqno = 0;
+ cd->next_seqno = 1;
spin_lock(&cache_list_lock);
cd->nextcheck = 0;
cd->entries = 0;
---
base-commit: 68f3218e45ab644ed37d5020a4a25e523fc0e30e
change-id: 20260411-exportd-nl-2cd2e9d451bc
Best regards,
--
Jeff Layton <jlayton@kernel.org>
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] sunrpc: start cache request seqno at 1 to fix netlink GET_REQS
2026-04-11 21:12 [PATCH] sunrpc: start cache request seqno at 1 to fix netlink GET_REQS Jeff Layton
@ 2026-04-13 17:24 ` Chuck Lever
0 siblings, 0 replies; 2+ messages in thread
From: Chuck Lever @ 2026-04-13 17:24 UTC (permalink / raw)
To: NeilBrown, Olga Kornievskaia, Dai Ngo, Tom Talpey,
Trond Myklebust, Anna Schumaker, Jeff Layton
Cc: Chuck Lever, linux-nfs, linux-kernel
From: Chuck Lever <chuck.lever@oracle.com>
On Sat, 11 Apr 2026 17:12:16 -0400, Jeff Layton wrote:
> sunrpc_cache_requests_snapshot() filters requests with
> crq->seqno <= min_seqno. The min_seqno for the first netlink
> dump call is cb->args[0] which is 0. Since next_seqno was
> initialized to 0, the very first cache request got seqno=0
> and was silently skipped by the snapshot (0 <= 0 is true).
>
> This caused netlink-based GET_REQS to return 0 pending requests
> even when a request was queued, preventing mountd from resolving
> cache entries (particularly expkey/nfsd.fh). The unresolved
> CACHE_PENDING state blocked all further notifications for the
> entry, leading to permanent NFS4ERR_DELAY hangs.
>
> [...]
Applied to nfsd-testing, thanks!
[1/1] sunrpc: start cache request seqno at 1 to fix netlink GET_REQS
commit: 2dd2484661eb089e5eb2ba9da4b87decb0f3be36
--
Chuck Lever <chuck.lever@oracle.com>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-04-13 17:24 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-11 21:12 [PATCH] sunrpc: start cache request seqno at 1 to fix netlink GET_REQS Jeff Layton
2026-04-13 17:24 ` Chuck Lever
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox