aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2016-09-13 04:12:34 -0400
committerDavid Howells <dhowells@redhat.com>2016-09-13 17:38:30 -0400
commitcbd00891de9bb4756bac6f6edfa945d5a6468977 (patch)
tree77d3b6433e4ed2f6c8fe65f93ef35e7532240d82
parent01fd0742248cfc99b3b0cba1e09e1c0ecb8658fa (diff)
rxrpc: Adjust the call ref tracepoint to show kernel API refs
Adjust the call ref tracepoint to show references held on a call by the kernel API separately as much as possible and add an additional trace to at the allocation point from the preallocation buffer for an incoming call. Note that this doesn't show the allocation of a client call for the kernel separately at the moment. Signed-off-by: David Howells <dhowells@redhat.com>
-rw-r--r--net/rxrpc/af_rxrpc.c2
-rw-r--r--net/rxrpc/ar-internal.h2
-rw-r--r--net/rxrpc/call_accept.c3
-rw-r--r--net/rxrpc/call_object.c2
4 files changed, 7 insertions, 2 deletions
diff --git a/net/rxrpc/af_rxrpc.c b/net/rxrpc/af_rxrpc.c
index caa226dd436e..25d00ded24bc 100644
--- a/net/rxrpc/af_rxrpc.c
+++ b/net/rxrpc/af_rxrpc.c
@@ -299,7 +299,7 @@ void rxrpc_kernel_end_call(struct socket *sock, struct rxrpc_call *call)
299{ 299{
300 _enter("%d{%d}", call->debug_id, atomic_read(&call->usage)); 300 _enter("%d{%d}", call->debug_id, atomic_read(&call->usage));
301 rxrpc_release_call(rxrpc_sk(sock->sk), call); 301 rxrpc_release_call(rxrpc_sk(sock->sk), call);
302 rxrpc_put_call(call, rxrpc_call_put); 302 rxrpc_put_call(call, rxrpc_call_put_kernel);
303} 303}
304EXPORT_SYMBOL(rxrpc_kernel_end_call); 304EXPORT_SYMBOL(rxrpc_kernel_end_call);
305 305
diff --git a/net/rxrpc/ar-internal.h b/net/rxrpc/ar-internal.h
index b1cb79ec4e96..47c74a581a0f 100644
--- a/net/rxrpc/ar-internal.h
+++ b/net/rxrpc/ar-internal.h
@@ -540,8 +540,10 @@ enum rxrpc_call_trace {
540 rxrpc_call_seen, 540 rxrpc_call_seen,
541 rxrpc_call_got, 541 rxrpc_call_got,
542 rxrpc_call_got_userid, 542 rxrpc_call_got_userid,
543 rxrpc_call_got_kernel,
543 rxrpc_call_put, 544 rxrpc_call_put,
544 rxrpc_call_put_userid, 545 rxrpc_call_put_userid,
546 rxrpc_call_put_kernel,
545 rxrpc_call_put_noqueue, 547 rxrpc_call_put_noqueue,
546 rxrpc_call__nr_trace 548 rxrpc_call__nr_trace
547}; 549};
diff --git a/net/rxrpc/call_accept.c b/net/rxrpc/call_accept.c
index 06e328f6b0f0..5fd9d2c89b7f 100644
--- a/net/rxrpc/call_accept.c
+++ b/net/rxrpc/call_accept.c
@@ -121,7 +121,7 @@ static int rxrpc_service_prealloc_one(struct rxrpc_sock *rx,
121 121
122 call->user_call_ID = user_call_ID; 122 call->user_call_ID = user_call_ID;
123 call->notify_rx = notify_rx; 123 call->notify_rx = notify_rx;
124 rxrpc_get_call(call, rxrpc_call_got); 124 rxrpc_get_call(call, rxrpc_call_got_kernel);
125 user_attach_call(call, user_call_ID); 125 user_attach_call(call, user_call_ID);
126 rxrpc_get_call(call, rxrpc_call_got_userid); 126 rxrpc_get_call(call, rxrpc_call_got_userid);
127 rb_link_node(&call->sock_node, parent, pp); 127 rb_link_node(&call->sock_node, parent, pp);
@@ -300,6 +300,7 @@ static struct rxrpc_call *rxrpc_alloc_incoming_call(struct rxrpc_sock *rx,
300 smp_store_release(&b->call_backlog_tail, 300 smp_store_release(&b->call_backlog_tail,
301 (call_tail + 1) & (RXRPC_BACKLOG_MAX - 1)); 301 (call_tail + 1) & (RXRPC_BACKLOG_MAX - 1));
302 302
303 rxrpc_see_call(call);
303 call->conn = conn; 304 call->conn = conn;
304 call->peer = rxrpc_get_peer(conn->params.peer); 305 call->peer = rxrpc_get_peer(conn->params.peer);
305 return call; 306 return call;
diff --git a/net/rxrpc/call_object.c b/net/rxrpc/call_object.c
index 18ab13f82f6e..3f9476508204 100644
--- a/net/rxrpc/call_object.c
+++ b/net/rxrpc/call_object.c
@@ -56,8 +56,10 @@ const char rxrpc_call_traces[rxrpc_call__nr_trace][4] = {
56 [rxrpc_call_seen] = "SEE", 56 [rxrpc_call_seen] = "SEE",
57 [rxrpc_call_got] = "GOT", 57 [rxrpc_call_got] = "GOT",
58 [rxrpc_call_got_userid] = "Gus", 58 [rxrpc_call_got_userid] = "Gus",
59 [rxrpc_call_got_kernel] = "Gke",
59 [rxrpc_call_put] = "PUT", 60 [rxrpc_call_put] = "PUT",
60 [rxrpc_call_put_userid] = "Pus", 61 [rxrpc_call_put_userid] = "Pus",
62 [rxrpc_call_put_kernel] = "Pke",
61 [rxrpc_call_put_noqueue] = "PNQ", 63 [rxrpc_call_put_noqueue] = "PNQ",
62}; 64};
63 65