summaryrefslogtreecommitdiff
path: root/include/linux/sunrpc
diff options
context:
space:
mode:
authorJeff Layton <jlayton@kernel.org>2026-02-23 12:09:59 -0500
committerChuck Lever <chuck.lever@oracle.com>2026-03-29 21:25:09 -0400
commit17c1d66579ff27a7a8f2f407d1425272ff6fdd8c (patch)
tree051c62661464306976337a52e9e4da3098dda598 /include/linux/sunrpc
parent6b4f16a532e794e0df90baf15173e2166f863864 (diff)
downloadlwn-17c1d66579ff27a7a8f2f407d1425272ff6fdd8c.tar.gz
lwn-17c1d66579ff27a7a8f2f407d1425272ff6fdd8c.zip
sunrpc: convert queue_lock from global spinlock to per-cache-detail lock
The global queue_lock serializes all upcall queue operations across every cache_detail instance. Convert it to a per-cache-detail spinlock so that different caches (e.g. auth.unix.ip vs nfsd.fh) no longer contend with each other on queue operations. Signed-off-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'include/linux/sunrpc')
-rw-r--r--include/linux/sunrpc/cache.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/sunrpc/cache.h b/include/linux/sunrpc/cache.h
index e783132e481f..3d32dd1f7b05 100644
--- a/include/linux/sunrpc/cache.h
+++ b/include/linux/sunrpc/cache.h
@@ -113,6 +113,7 @@ struct cache_detail {
/* fields for communication over channel */
struct list_head queue;
+ spinlock_t queue_lock;
atomic_t writers; /* how many time is /channel open */
time64_t last_close; /* if no writers, when did last close */