mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
rxrpc: Add tracepoint for working out where aborts happen
Add a tracepoint for working out where local aborts happen. Each tracepoint call is labelled with a 3-letter code so that they can be distinguished - and the DATA sequence number is added too where available. rxrpc_kernel_abort_call() also takes a 3-letter code so that AFS can indicate the circumstances when it aborts a call. Signed-off-by: David Howells <[email protected]>
This commit is contained in:
parent
e8d6bbb05a
commit
5a42976d4f
11 changed files with 132 additions and 98 deletions
|
|
@ -377,7 +377,7 @@ int afs_make_call(struct in_addr *addr, struct afs_call *call, gfp_t gfp,
|
|||
return wait_mode->wait(call);
|
||||
|
||||
error_do_abort:
|
||||
rxrpc_kernel_abort_call(afs_socket, rxcall, RX_USER_ABORT);
|
||||
rxrpc_kernel_abort_call(afs_socket, rxcall, RX_USER_ABORT, -ret, "KSD");
|
||||
error_kill_call:
|
||||
afs_end_call(call);
|
||||
_leave(" = %d", ret);
|
||||
|
|
@ -425,12 +425,12 @@ static void afs_deliver_to_call(struct afs_call *call)
|
|||
case -ENOTCONN:
|
||||
abort_code = RX_CALL_DEAD;
|
||||
rxrpc_kernel_abort_call(afs_socket, call->rxcall,
|
||||
abort_code);
|
||||
abort_code, -ret, "KNC");
|
||||
goto do_abort;
|
||||
case -ENOTSUPP:
|
||||
abort_code = RX_INVALID_OPERATION;
|
||||
rxrpc_kernel_abort_call(afs_socket, call->rxcall,
|
||||
abort_code);
|
||||
abort_code, -ret, "KIV");
|
||||
goto do_abort;
|
||||
case -ENODATA:
|
||||
case -EBADMSG:
|
||||
|
|
@ -440,7 +440,7 @@ static void afs_deliver_to_call(struct afs_call *call)
|
|||
if (call->state != AFS_CALL_AWAIT_REPLY)
|
||||
abort_code = RXGEN_SS_UNMARSHAL;
|
||||
rxrpc_kernel_abort_call(afs_socket, call->rxcall,
|
||||
abort_code);
|
||||
abort_code, EBADMSG, "KUM");
|
||||
goto do_abort;
|
||||
}
|
||||
}
|
||||
|
|
@ -463,6 +463,7 @@ do_abort:
|
|||
*/
|
||||
static int afs_wait_for_call_to_complete(struct afs_call *call)
|
||||
{
|
||||
const char *abort_why;
|
||||
int ret;
|
||||
|
||||
DECLARE_WAITQUEUE(myself, current);
|
||||
|
|
@ -481,9 +482,11 @@ static int afs_wait_for_call_to_complete(struct afs_call *call)
|
|||
continue;
|
||||
}
|
||||
|
||||
abort_why = "KWC";
|
||||
ret = call->error;
|
||||
if (call->state == AFS_CALL_COMPLETE)
|
||||
break;
|
||||
abort_why = "KWI";
|
||||
ret = -EINTR;
|
||||
if (signal_pending(current))
|
||||
break;
|
||||
|
|
@ -497,7 +500,7 @@ static int afs_wait_for_call_to_complete(struct afs_call *call)
|
|||
if (call->state < AFS_CALL_COMPLETE) {
|
||||
_debug("call incomplete");
|
||||
rxrpc_kernel_abort_call(afs_socket, call->rxcall,
|
||||
RX_CALL_DEAD);
|
||||
RX_CALL_DEAD, -ret, abort_why);
|
||||
}
|
||||
|
||||
_debug("call complete");
|
||||
|
|
@ -695,7 +698,7 @@ void afs_send_empty_reply(struct afs_call *call)
|
|||
case -ENOMEM:
|
||||
_debug("oom");
|
||||
rxrpc_kernel_abort_call(afs_socket, call->rxcall,
|
||||
RX_USER_ABORT);
|
||||
RX_USER_ABORT, ENOMEM, "KOO");
|
||||
default:
|
||||
afs_end_call(call);
|
||||
_leave(" [error]");
|
||||
|
|
@ -734,7 +737,7 @@ void afs_send_simple_reply(struct afs_call *call, const void *buf, size_t len)
|
|||
if (n == -ENOMEM) {
|
||||
_debug("oom");
|
||||
rxrpc_kernel_abort_call(afs_socket, call->rxcall,
|
||||
RX_USER_ABORT);
|
||||
RX_USER_ABORT, ENOMEM, "KOO");
|
||||
}
|
||||
afs_end_call(call);
|
||||
_leave(" [error]");
|
||||
|
|
|
|||
Loading…
Reference in a new issue