Commit 8b9a7bd4 authored by David Howells's avatar David Howells Committed by Jakub Kicinski
Browse files

rxrpc: Add a tracepoint for aborts being proposed



Add a tracepoint to rxrpc to trace the proposal of an abort.  The abort is
performed asynchronously by the I/O thread.

Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: Simon Horman <horms@kernel.org>
cc: linux-afs@lists.infradead.org
Link: https://patch.msgid.link/726356.1730898045@warthog.procyon.org.uk


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent d9ccb18f
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -773,6 +773,31 @@ TRACE_EVENT(rxrpc_rx_done,
	    TP_printk("r=%d a=%d", __entry->result, __entry->abort_code)
	    );

TRACE_EVENT(rxrpc_abort_call,
	    TP_PROTO(const struct rxrpc_call *call, int abort_code),

	    TP_ARGS(call, abort_code),

	    TP_STRUCT__entry(
		    __field(unsigned int,		call_nr)
		    __field(enum rxrpc_abort_reason,	why)
		    __field(int,			abort_code)
		    __field(int,			error)
			     ),

	    TP_fast_assign(
		    __entry->call_nr	= call->debug_id;
		    __entry->why	= call->send_abort_why;
		    __entry->abort_code	= abort_code;
		    __entry->error	= call->send_abort_err;
			   ),

	    TP_printk("c=%08x a=%d e=%d %s",
		      __entry->call_nr,
		      __entry->abort_code, __entry->error,
		      __print_symbolic(__entry->why, rxrpc_abort_reasons))
	    );

TRACE_EVENT(rxrpc_abort,
	    TP_PROTO(unsigned int call_nr, enum rxrpc_abort_reason why,
		     u32 cid, u32 call_id, rxrpc_seq_t seq, int abort_code, int error),
+1 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ bool rxrpc_propose_abort(struct rxrpc_call *call, s32 abort_code, int error,
		call->send_abort_why = why;
		call->send_abort_err = error;
		call->send_abort_seq = 0;
		trace_rxrpc_abort_call(call, abort_code);
		/* Request abort locklessly vs rxrpc_input_call_event(). */
		smp_store_release(&call->send_abort, abort_code);
		rxrpc_poke_call(call, rxrpc_call_poke_abort);