NFSD: Add tracepoints for EXCHANGEID edge cases

[ Upstream commit e8f80c5545ec5794644b48537449e48b009d608d ]

Some of the most common cases are traced. Enough infrastructure is
now in place that more can be added later, as needed.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Chuck Lever
2021-05-14 15:56:19 -04:00
committed by Greg Kroah-Hartman
parent 5070351cdc
commit 88b3cdfd48
2 changed files with 10 additions and 3 deletions

View File

@@ -3200,6 +3200,7 @@ nfsd4_exchange_id(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
} }
/* case 6 */ /* case 6 */
exid->flags |= EXCHGID4_FLAG_CONFIRMED_R; exid->flags |= EXCHGID4_FLAG_CONFIRMED_R;
trace_nfsd_clid_confirmed_r(conf);
goto out_copy; goto out_copy;
} }
if (!creds_match) { /* case 3 */ if (!creds_match) { /* case 3 */
@@ -3212,6 +3213,7 @@ nfsd4_exchange_id(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
} }
if (verfs_match) { /* case 2 */ if (verfs_match) { /* case 2 */
conf->cl_exchange_flags |= EXCHGID4_FLAG_CONFIRMED_R; conf->cl_exchange_flags |= EXCHGID4_FLAG_CONFIRMED_R;
trace_nfsd_clid_confirmed_r(conf);
goto out_copy; goto out_copy;
} }
/* case 5, client reboot */ /* case 5, client reboot */
@@ -3225,11 +3227,13 @@ nfsd4_exchange_id(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
goto out; goto out;
} }
unconf = find_unconfirmed_client_by_name(&exid->clname, nn); unconf = find_unconfirmed_client_by_name(&exid->clname, nn);
if (unconf) /* case 4, possible retry or client restart */ if (unconf) /* case 4, possible retry or client restart */
unhash_client_locked(unconf); unhash_client_locked(unconf);
/* case 1 (normal case) */ /* case 1, new owner ID */
trace_nfsd_clid_fresh(new);
out_new: out_new:
if (conf) { if (conf) {
status = mark_client_expired_locked(conf); status = mark_client_expired_locked(conf);
@@ -3259,8 +3263,10 @@ out:
out_nolock: out_nolock:
if (new) if (new)
expire_client(new); expire_client(new);
if (unconf) if (unconf) {
trace_nfsd_clid_expire_unconf(&unconf->cl_clientid);
expire_client(unconf); expire_client(unconf);
}
return status; return status;
} }

View File

@@ -636,6 +636,7 @@ DEFINE_EVENT(nfsd_clid_class, nfsd_clid_##name, \
TP_ARGS(clp)) TP_ARGS(clp))
DEFINE_CLID_EVENT(fresh); DEFINE_CLID_EVENT(fresh);
DEFINE_CLID_EVENT(confirmed_r);
/* /*
* from fs/nfsd/filecache.h * from fs/nfsd/filecache.h