NFSD: Replace dprintks in nfsd4_cb_sequence_done()
Improve observability of backchannel session operation. Reviewed-by: Jeff Layton <jlayton@kernel.org> Reviewed-by: Benjamin Coddington <bcodding@redhat.com> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
f52f1975b1
commit
8626664c87
@ -1165,6 +1165,8 @@ static bool nfsd4_cb_sequence_done(struct rpc_task *task, struct nfsd4_callback
|
|||||||
if (!cb->cb_holds_slot)
|
if (!cb->cb_holds_slot)
|
||||||
goto need_restart;
|
goto need_restart;
|
||||||
|
|
||||||
|
/* This is the operation status code for CB_SEQUENCE */
|
||||||
|
trace_nfsd_cb_seq_status(task, cb);
|
||||||
switch (cb->cb_seq_status) {
|
switch (cb->cb_seq_status) {
|
||||||
case 0:
|
case 0:
|
||||||
/*
|
/*
|
||||||
@ -1210,13 +1212,10 @@ static bool nfsd4_cb_sequence_done(struct rpc_task *task, struct nfsd4_callback
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
nfsd4_mark_cb_fault(cb->cb_clp, cb->cb_seq_status);
|
nfsd4_mark_cb_fault(cb->cb_clp, cb->cb_seq_status);
|
||||||
dprintk("%s: unprocessed error %d\n", __func__,
|
|
||||||
cb->cb_seq_status);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nfsd41_cb_release_slot(cb);
|
nfsd41_cb_release_slot(cb);
|
||||||
dprintk("%s: freed slot, new seqid=%d\n", __func__,
|
|
||||||
clp->cl_cb_session->se_cb_seq_nr);
|
trace_nfsd_cb_free_slot(task, cb);
|
||||||
|
|
||||||
if (RPC_SIGNALLED(task))
|
if (RPC_SIGNALLED(task))
|
||||||
goto need_restart;
|
goto need_restart;
|
||||||
|
@ -9,8 +9,10 @@
|
|||||||
#define _NFSD_TRACE_H
|
#define _NFSD_TRACE_H
|
||||||
|
|
||||||
#include <linux/tracepoint.h>
|
#include <linux/tracepoint.h>
|
||||||
|
#include <linux/sunrpc/clnt.h>
|
||||||
#include <linux/sunrpc/xprt.h>
|
#include <linux/sunrpc/xprt.h>
|
||||||
#include <trace/misc/nfs.h>
|
#include <trace/misc/nfs.h>
|
||||||
|
#include <trace/misc/sunrpc.h>
|
||||||
|
|
||||||
#include "export.h"
|
#include "export.h"
|
||||||
#include "nfsfh.h"
|
#include "nfsfh.h"
|
||||||
@ -1440,6 +1442,86 @@ TRACE_EVENT(nfsd_cb_setup_err,
|
|||||||
__entry->error)
|
__entry->error)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
TRACE_EVENT(nfsd_cb_seq_status,
|
||||||
|
TP_PROTO(
|
||||||
|
const struct rpc_task *task,
|
||||||
|
const struct nfsd4_callback *cb
|
||||||
|
),
|
||||||
|
TP_ARGS(task, cb),
|
||||||
|
TP_STRUCT__entry(
|
||||||
|
__field(unsigned int, task_id)
|
||||||
|
__field(unsigned int, client_id)
|
||||||
|
__field(u32, cl_boot)
|
||||||
|
__field(u32, cl_id)
|
||||||
|
__field(u32, seqno)
|
||||||
|
__field(u32, reserved)
|
||||||
|
__field(int, tk_status)
|
||||||
|
__field(int, seq_status)
|
||||||
|
),
|
||||||
|
TP_fast_assign(
|
||||||
|
const struct nfs4_client *clp = cb->cb_clp;
|
||||||
|
const struct nfsd4_session *session = clp->cl_cb_session;
|
||||||
|
const struct nfsd4_sessionid *sid =
|
||||||
|
(struct nfsd4_sessionid *)&session->se_sessionid;
|
||||||
|
|
||||||
|
__entry->task_id = task->tk_pid;
|
||||||
|
__entry->client_id = task->tk_client ?
|
||||||
|
task->tk_client->cl_clid : -1;
|
||||||
|
__entry->cl_boot = sid->clientid.cl_boot;
|
||||||
|
__entry->cl_id = sid->clientid.cl_id;
|
||||||
|
__entry->seqno = sid->sequence;
|
||||||
|
__entry->reserved = sid->reserved;
|
||||||
|
__entry->tk_status = task->tk_status;
|
||||||
|
__entry->seq_status = cb->cb_seq_status;
|
||||||
|
),
|
||||||
|
TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
|
||||||
|
" sessionid=%08x:%08x:%08x:%08x tk_status=%d seq_status=%d\n",
|
||||||
|
__entry->task_id, __entry->client_id,
|
||||||
|
__entry->cl_boot, __entry->cl_id,
|
||||||
|
__entry->seqno, __entry->reserved,
|
||||||
|
__entry->tk_status, __entry->seq_status
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
TRACE_EVENT(nfsd_cb_free_slot,
|
||||||
|
TP_PROTO(
|
||||||
|
const struct rpc_task *task,
|
||||||
|
const struct nfsd4_callback *cb
|
||||||
|
),
|
||||||
|
TP_ARGS(task, cb),
|
||||||
|
TP_STRUCT__entry(
|
||||||
|
__field(unsigned int, task_id)
|
||||||
|
__field(unsigned int, client_id)
|
||||||
|
__field(u32, cl_boot)
|
||||||
|
__field(u32, cl_id)
|
||||||
|
__field(u32, seqno)
|
||||||
|
__field(u32, reserved)
|
||||||
|
__field(u32, slot_seqno)
|
||||||
|
),
|
||||||
|
TP_fast_assign(
|
||||||
|
const struct nfs4_client *clp = cb->cb_clp;
|
||||||
|
const struct nfsd4_session *session = clp->cl_cb_session;
|
||||||
|
const struct nfsd4_sessionid *sid =
|
||||||
|
(struct nfsd4_sessionid *)&session->se_sessionid;
|
||||||
|
|
||||||
|
__entry->task_id = task->tk_pid;
|
||||||
|
__entry->client_id = task->tk_client ?
|
||||||
|
task->tk_client->cl_clid : -1;
|
||||||
|
__entry->cl_boot = sid->clientid.cl_boot;
|
||||||
|
__entry->cl_id = sid->clientid.cl_id;
|
||||||
|
__entry->seqno = sid->sequence;
|
||||||
|
__entry->reserved = sid->reserved;
|
||||||
|
__entry->slot_seqno = session->se_cb_seq_nr;
|
||||||
|
),
|
||||||
|
TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
|
||||||
|
" sessionid=%08x:%08x:%08x:%08x new slot seqno=%u\n",
|
||||||
|
__entry->task_id, __entry->client_id,
|
||||||
|
__entry->cl_boot, __entry->cl_id,
|
||||||
|
__entry->seqno, __entry->reserved,
|
||||||
|
__entry->slot_seqno
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
TRACE_EVENT_CONDITION(nfsd_cb_recall,
|
TRACE_EVENT_CONDITION(nfsd_cb_recall,
|
||||||
TP_PROTO(
|
TP_PROTO(
|
||||||
const struct nfs4_stid *stid
|
const struct nfs4_stid *stid
|
||||||
|
Loading…
Reference in New Issue
Block a user