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:

committed by
Greg Kroah-Hartman

parent
5070351cdc
commit
88b3cdfd48
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user