In addition to the client's address, display the callback channel state and address in the 'info' file. Define and use a common function for this information that can be used by both callback trace events and the NFS4 client 'info' file. Signed-off-by: Dave Wysochanski <dwysocha@xxxxxxxxxx> --- fs/nfsd/nfs4state.c | 2 ++ fs/nfsd/trace.c | 15 +++++++++++++++ fs/nfsd/trace.h | 9 ++------- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index b2573d3ecd3c..f3b8221bb543 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -2385,6 +2385,8 @@ static int client_info_show(struct seq_file *m, void *v) seq_printf(m, "\nImplementation time: [%lld, %ld]\n", clp->cl_nii_time.tv_sec, clp->cl_nii_time.tv_nsec); } + seq_printf(m, "callback state: %s\n", cb_state2str(clp->cl_cb_state)); + seq_printf(m, "callback address: %pISpc\n", &clp->cl_cb_conn.cb_addr); drop_client(clp); return 0; diff --git a/fs/nfsd/trace.c b/fs/nfsd/trace.c index f008b95ceec2..6291b5d10824 100644 --- a/fs/nfsd/trace.c +++ b/fs/nfsd/trace.c @@ -2,3 +2,18 @@ #define CREATE_TRACE_POINTS #include "trace.h" + +const char *cb_state2str(const int state) +{ + switch (state) { + case NFSD4_CB_UP: + return "UP"; + case NFSD4_CB_UNKNOWN: + return "UNKNOWN"; + case NFSD4_CB_DOWN: + return "DOWN"; + case NFSD4_CB_FAULT: + return "FAULT"; + } + return "UNDEFINED"; +} diff --git a/fs/nfsd/trace.h b/fs/nfsd/trace.h index 10cc3aaf1089..8908d48b2aa6 100644 --- a/fs/nfsd/trace.h +++ b/fs/nfsd/trace.h @@ -876,12 +876,7 @@ TP_printk("client %08x:%08x", __entry->cl_boot, __entry->cl_id) ) -#define show_cb_state(val) \ - __print_symbolic(val, \ - { NFSD4_CB_UP, "UP" }, \ - { NFSD4_CB_UNKNOWN, "UNKNOWN" }, \ - { NFSD4_CB_DOWN, "DOWN" }, \ - { NFSD4_CB_FAULT, "FAULT"}) +const char *cb_state2str(const int state); DECLARE_EVENT_CLASS(nfsd_cb_class, TP_PROTO(const struct nfs4_client *clp), @@ -901,7 +896,7 @@ ), TP_printk("addr=%pISpc client %08x:%08x state=%s", __entry->addr, __entry->cl_boot, __entry->cl_id, - show_cb_state(__entry->state)) + cb_state2str(__entry->state)) ); #define DEFINE_NFSD_CB_EVENT(name) \ -- 1.8.3.1