]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
NFSD: use per-operation statidx for callback procedures
authorChuck Lever <chuck.lever@oracle.com>
Fri, 13 Mar 2026 16:31:47 +0000 (12:31 -0400)
committerChuck Lever <chuck.lever@oracle.com>
Fri, 3 Apr 2026 13:27:15 +0000 (09:27 -0400)
The callback RPC procedure table uses NFSPROC4_CB_##call for
p_statidx, which maps CB_NULL to index 0 and every
compound-based callback (CB_RECALL, CB_LAYOUT, CB_OFFLOAD,
etc.) to index 1. All compound callback operations therefore
share a single statistics counter, making per-operation
accounting impossible.

Assign p_statidx from the NFSPROC4_CLNT_##proc enum instead,
giving each callback operation its own counter slot. The
counts array is already sized by ARRAY_SIZE(nfs4_cb_procedures),
so no allocation change is needed.

Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/nfsd/nfs4callback.c

index aea8bdd2fdc49e6b4be3d832eb25de17e2ffbf53..74effafdd0dc9cc8aba13c7cbf27efc89aafc1b7 100644 (file)
@@ -1016,7 +1016,7 @@ static int nfs4_xdr_dec_cb_offload(struct rpc_rqst *rqstp,
        .p_decode  = nfs4_xdr_dec_##restype,                            \
        .p_arglen  = NFS4_enc_##argtype##_sz,                           \
        .p_replen  = NFS4_dec_##restype##_sz,                           \
-       .p_statidx = NFSPROC4_CB_##call,                                \
+       .p_statidx = NFSPROC4_CLNT_##proc,                              \
        .p_name    = #proc,                                             \
 }