Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cbd00891 authored by David Howells's avatar David Howells
Browse files

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: default avatarDavid Howells <dhowells@redhat.com>
parent 01fd0742
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -299,7 +299,7 @@ void rxrpc_kernel_end_call(struct socket *sock, struct rxrpc_call *call)
{
	_enter("%d{%d}", call->debug_id, atomic_read(&call->usage));
	rxrpc_release_call(rxrpc_sk(sock->sk), call);
	rxrpc_put_call(call, rxrpc_call_put);
	rxrpc_put_call(call, rxrpc_call_put_kernel);
}
EXPORT_SYMBOL(rxrpc_kernel_end_call);

+2 −0
Original line number Diff line number Diff line
@@ -540,8 +540,10 @@ enum rxrpc_call_trace {
	rxrpc_call_seen,
	rxrpc_call_got,
	rxrpc_call_got_userid,
	rxrpc_call_got_kernel,
	rxrpc_call_put,
	rxrpc_call_put_userid,
	rxrpc_call_put_kernel,
	rxrpc_call_put_noqueue,
	rxrpc_call__nr_trace
};
+2 −1
Original line number Diff line number Diff line
@@ -121,7 +121,7 @@ static int rxrpc_service_prealloc_one(struct rxrpc_sock *rx,

		call->user_call_ID = user_call_ID;
		call->notify_rx = notify_rx;
		rxrpc_get_call(call, rxrpc_call_got);
		rxrpc_get_call(call, rxrpc_call_got_kernel);
		user_attach_call(call, user_call_ID);
		rxrpc_get_call(call, rxrpc_call_got_userid);
		rb_link_node(&call->sock_node, parent, pp);
@@ -300,6 +300,7 @@ static struct rxrpc_call *rxrpc_alloc_incoming_call(struct rxrpc_sock *rx,
	smp_store_release(&b->call_backlog_tail,
			  (call_tail + 1) & (RXRPC_BACKLOG_MAX - 1));

	rxrpc_see_call(call);
	call->conn = conn;
	call->peer = rxrpc_get_peer(conn->params.peer);
	return call;
+2 −0
Original line number Diff line number Diff line
@@ -56,8 +56,10 @@ const char rxrpc_call_traces[rxrpc_call__nr_trace][4] = {
	[rxrpc_call_seen]		= "SEE",
	[rxrpc_call_got]		= "GOT",
	[rxrpc_call_got_userid]		= "Gus",
	[rxrpc_call_got_kernel]		= "Gke",
	[rxrpc_call_put]		= "PUT",
	[rxrpc_call_put_userid]		= "Pus",
	[rxrpc_call_put_kernel]		= "Pke",
	[rxrpc_call_put_noqueue]	= "PNQ",
};