Skip to content

Commit 9db0e15

Browse files
committed
NFSD: Use __sockaddr field to store socket addresses
As an example usage of the new __sockaddr field, convert some NFSD trace points to use it. Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
1 parent c6ced22 commit 9db0e15

1 file changed

Lines changed: 39 additions & 40 deletions

File tree

fs/nfsd/trace.h

Lines changed: 39 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -613,20 +613,21 @@ TRACE_EVENT(nfsd_clid_cred_mismatch,
613613
__field(u32, cl_id)
614614
__field(unsigned long, cl_flavor)
615615
__field(unsigned long, new_flavor)
616-
__array(unsigned char, addr, sizeof(struct sockaddr_in6))
616+
__sockaddr(addr, rqstp->rq_xprt->xpt_remotelen)
617617
),
618618
TP_fast_assign(
619619
__entry->cl_boot = clp->cl_clientid.cl_boot;
620620
__entry->cl_id = clp->cl_clientid.cl_id;
621621
__entry->cl_flavor = clp->cl_cred.cr_flavor;
622622
__entry->new_flavor = rqstp->rq_cred.cr_flavor;
623-
memcpy(__entry->addr, &rqstp->rq_xprt->xpt_remote,
624-
sizeof(struct sockaddr_in6));
623+
__assign_sockaddr(addr, &rqstp->rq_xprt->xpt_remote,
624+
rqstp->rq_xprt->xpt_remotelen);
625625
),
626626
TP_printk("client %08x:%08x flavor=%s, conflict=%s from addr=%pISpc",
627627
__entry->cl_boot, __entry->cl_id,
628628
show_nfsd_authflavor(__entry->cl_flavor),
629-
show_nfsd_authflavor(__entry->new_flavor), __entry->addr
629+
show_nfsd_authflavor(__entry->new_flavor),
630+
__get_sockaddr(addr)
630631
)
631632
)
632633

@@ -642,7 +643,7 @@ TRACE_EVENT(nfsd_clid_verf_mismatch,
642643
__field(u32, cl_id)
643644
__array(unsigned char, cl_verifier, NFS4_VERIFIER_SIZE)
644645
__array(unsigned char, new_verifier, NFS4_VERIFIER_SIZE)
645-
__array(unsigned char, addr, sizeof(struct sockaddr_in6))
646+
__sockaddr(addr, rqstp->rq_xprt->xpt_remotelen)
646647
),
647648
TP_fast_assign(
648649
__entry->cl_boot = clp->cl_clientid.cl_boot;
@@ -651,14 +652,14 @@ TRACE_EVENT(nfsd_clid_verf_mismatch,
651652
NFS4_VERIFIER_SIZE);
652653
memcpy(__entry->new_verifier, (void *)verf,
653654
NFS4_VERIFIER_SIZE);
654-
memcpy(__entry->addr, &rqstp->rq_xprt->xpt_remote,
655-
sizeof(struct sockaddr_in6));
655+
__assign_sockaddr(addr, &rqstp->rq_xprt->xpt_remote,
656+
rqstp->rq_xprt->xpt_remotelen);
656657
),
657658
TP_printk("client %08x:%08x verf=0x%s, updated=0x%s from addr=%pISpc",
658659
__entry->cl_boot, __entry->cl_id,
659660
__print_hex_str(__entry->cl_verifier, NFS4_VERIFIER_SIZE),
660661
__print_hex_str(__entry->new_verifier, NFS4_VERIFIER_SIZE),
661-
__entry->addr
662+
__get_sockaddr(addr)
662663
)
663664
);
664665

@@ -908,18 +909,17 @@ TRACE_EVENT(nfsd_cb_args,
908909
__field(u32, cl_id)
909910
__field(u32, prog)
910911
__field(u32, ident)
911-
__array(unsigned char, addr, sizeof(struct sockaddr_in6))
912+
__sockaddr(addr, conn->cb_addrlen)
912913
),
913914
TP_fast_assign(
914915
__entry->cl_boot = clp->cl_clientid.cl_boot;
915916
__entry->cl_id = clp->cl_clientid.cl_id;
916917
__entry->prog = conn->cb_prog;
917918
__entry->ident = conn->cb_ident;
918-
memcpy(__entry->addr, &conn->cb_addr,
919-
sizeof(struct sockaddr_in6));
919+
__assign_sockaddr(addr, &conn->cb_addr, conn->cb_addrlen);
920920
),
921921
TP_printk("addr=%pISpc client %08x:%08x prog=%u ident=%u",
922-
__entry->addr, __entry->cl_boot, __entry->cl_id,
922+
__get_sockaddr(addr), __entry->cl_boot, __entry->cl_id,
923923
__entry->prog, __entry->ident)
924924
);
925925

@@ -951,17 +951,17 @@ DECLARE_EVENT_CLASS(nfsd_cb_class,
951951
__field(unsigned long, state)
952952
__field(u32, cl_boot)
953953
__field(u32, cl_id)
954-
__array(unsigned char, addr, sizeof(struct sockaddr_in6))
954+
__sockaddr(addr, clp->cl_cb_conn.cb_addrlen)
955955
),
956956
TP_fast_assign(
957957
__entry->state = clp->cl_cb_state;
958958
__entry->cl_boot = clp->cl_clientid.cl_boot;
959959
__entry->cl_id = clp->cl_clientid.cl_id;
960-
memcpy(__entry->addr, &clp->cl_cb_conn.cb_addr,
961-
sizeof(struct sockaddr_in6));
960+
__assign_sockaddr(addr, &clp->cl_cb_conn.cb_addr,
961+
clp->cl_cb_conn.cb_addrlen)
962962
),
963963
TP_printk("addr=%pISpc client %08x:%08x state=%s",
964-
__entry->addr, __entry->cl_boot, __entry->cl_id,
964+
__get_sockaddr(addr), __entry->cl_boot, __entry->cl_id,
965965
show_cb_state(__entry->state))
966966
);
967967

@@ -1001,19 +1001,19 @@ TRACE_EVENT(nfsd_cb_setup,
10011001
__field(u32, cl_boot)
10021002
__field(u32, cl_id)
10031003
__field(unsigned long, authflavor)
1004-
__array(unsigned char, addr, sizeof(struct sockaddr_in6))
1004+
__sockaddr(addr, clp->cl_cb_conn.cb_addrlen)
10051005
__array(unsigned char, netid, 8)
10061006
),
10071007
TP_fast_assign(
10081008
__entry->cl_boot = clp->cl_clientid.cl_boot;
10091009
__entry->cl_id = clp->cl_clientid.cl_id;
10101010
strlcpy(__entry->netid, netid, sizeof(__entry->netid));
10111011
__entry->authflavor = authflavor;
1012-
memcpy(__entry->addr, &clp->cl_cb_conn.cb_addr,
1013-
sizeof(struct sockaddr_in6));
1012+
__assign_sockaddr(addr, &clp->cl_cb_conn.cb_addr,
1013+
clp->cl_cb_conn.cb_addrlen)
10141014
),
10151015
TP_printk("addr=%pISpc client %08x:%08x proto=%s flavor=%s",
1016-
__entry->addr, __entry->cl_boot, __entry->cl_id,
1016+
__get_sockaddr(addr), __entry->cl_boot, __entry->cl_id,
10171017
__entry->netid, show_nfsd_authflavor(__entry->authflavor))
10181018
);
10191019

@@ -1027,30 +1027,32 @@ TRACE_EVENT(nfsd_cb_setup_err,
10271027
__field(long, error)
10281028
__field(u32, cl_boot)
10291029
__field(u32, cl_id)
1030-
__array(unsigned char, addr, sizeof(struct sockaddr_in6))
1030+
__sockaddr(addr, clp->cl_cb_conn.cb_addrlen)
10311031
),
10321032
TP_fast_assign(
10331033
__entry->error = error;
10341034
__entry->cl_boot = clp->cl_clientid.cl_boot;
10351035
__entry->cl_id = clp->cl_clientid.cl_id;
1036-
memcpy(__entry->addr, &clp->cl_cb_conn.cb_addr,
1037-
sizeof(struct sockaddr_in6));
1036+
__assign_sockaddr(addr, &clp->cl_cb_conn.cb_addr,
1037+
clp->cl_cb_conn.cb_addrlen)
10381038
),
10391039
TP_printk("addr=%pISpc client %08x:%08x error=%ld",
1040-
__entry->addr, __entry->cl_boot, __entry->cl_id, __entry->error)
1040+
__get_sockaddr(addr), __entry->cl_boot, __entry->cl_id,
1041+
__entry->error)
10411042
);
10421043

1043-
TRACE_EVENT(nfsd_cb_recall,
1044+
TRACE_EVENT_CONDITION(nfsd_cb_recall,
10441045
TP_PROTO(
10451046
const struct nfs4_stid *stid
10461047
),
10471048
TP_ARGS(stid),
1049+
TP_CONDITION(stid->sc_client),
10481050
TP_STRUCT__entry(
10491051
__field(u32, cl_boot)
10501052
__field(u32, cl_id)
10511053
__field(u32, si_id)
10521054
__field(u32, si_generation)
1053-
__array(unsigned char, addr, sizeof(struct sockaddr_in6))
1055+
__sockaddr(addr, stid->sc_client->cl_cb_conn.cb_addrlen)
10541056
),
10551057
TP_fast_assign(
10561058
const stateid_t *stp = &stid->sc_stateid;
@@ -1060,14 +1062,11 @@ TRACE_EVENT(nfsd_cb_recall,
10601062
__entry->cl_id = stp->si_opaque.so_clid.cl_id;
10611063
__entry->si_id = stp->si_opaque.so_id;
10621064
__entry->si_generation = stp->si_generation;
1063-
if (clp)
1064-
memcpy(__entry->addr, &clp->cl_cb_conn.cb_addr,
1065-
sizeof(struct sockaddr_in6));
1066-
else
1067-
memset(__entry->addr, 0, sizeof(struct sockaddr_in6));
1065+
__assign_sockaddr(addr, &clp->cl_cb_conn.cb_addr,
1066+
clp->cl_cb_conn.cb_addrlen)
10681067
),
10691068
TP_printk("addr=%pISpc client %08x:%08x stateid %08x:%08x",
1070-
__entry->addr, __entry->cl_boot, __entry->cl_id,
1069+
__get_sockaddr(addr), __entry->cl_boot, __entry->cl_id,
10711070
__entry->si_id, __entry->si_generation)
10721071
);
10731072

@@ -1081,19 +1080,19 @@ TRACE_EVENT(nfsd_cb_notify_lock,
10811080
__field(u32, cl_boot)
10821081
__field(u32, cl_id)
10831082
__field(u32, fh_hash)
1084-
__array(unsigned char, addr, sizeof(struct sockaddr_in6))
1083+
__sockaddr(addr, lo->lo_owner.so_client->cl_cb_conn.cb_addrlen)
10851084
),
10861085
TP_fast_assign(
10871086
const struct nfs4_client *clp = lo->lo_owner.so_client;
10881087

10891088
__entry->cl_boot = clp->cl_clientid.cl_boot;
10901089
__entry->cl_id = clp->cl_clientid.cl_id;
10911090
__entry->fh_hash = knfsd_fh_hash(&nbl->nbl_fh);
1092-
memcpy(__entry->addr, &clp->cl_cb_conn.cb_addr,
1093-
sizeof(struct sockaddr_in6));
1091+
__assign_sockaddr(addr, &clp->cl_cb_conn.cb_addr,
1092+
clp->cl_cb_conn.cb_addrlen)
10941093
),
10951094
TP_printk("addr=%pISpc client %08x:%08x fh_hash=0x%08x",
1096-
__entry->addr, __entry->cl_boot, __entry->cl_id,
1095+
__get_sockaddr(addr), __entry->cl_boot, __entry->cl_id,
10971096
__entry->fh_hash)
10981097
);
10991098

@@ -1114,7 +1113,7 @@ TRACE_EVENT(nfsd_cb_offload,
11141113
__field(u32, fh_hash)
11151114
__field(int, status)
11161115
__field(u64, count)
1117-
__array(unsigned char, addr, sizeof(struct sockaddr_in6))
1116+
__sockaddr(addr, clp->cl_cb_conn.cb_addrlen)
11181117
),
11191118
TP_fast_assign(
11201119
__entry->cl_boot = stp->si_opaque.so_clid.cl_boot;
@@ -1124,11 +1123,11 @@ TRACE_EVENT(nfsd_cb_offload,
11241123
__entry->fh_hash = knfsd_fh_hash(fh);
11251124
__entry->status = be32_to_cpu(status);
11261125
__entry->count = count;
1127-
memcpy(__entry->addr, &clp->cl_cb_conn.cb_addr,
1128-
sizeof(struct sockaddr_in6));
1126+
__assign_sockaddr(addr, &clp->cl_cb_conn.cb_addr,
1127+
clp->cl_cb_conn.cb_addrlen)
11291128
),
11301129
TP_printk("addr=%pISpc client %08x:%08x stateid %08x:%08x fh_hash=0x%08x count=%llu status=%d",
1131-
__entry->addr, __entry->cl_boot, __entry->cl_id,
1130+
__get_sockaddr(addr), __entry->cl_boot, __entry->cl_id,
11321131
__entry->si_id, __entry->si_generation,
11331132
__entry->fh_hash, __entry->count, __entry->status)
11341133
);

0 commit comments

Comments
 (0)