SUNRPC: Capture signalled RPC tasks

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
Chuck Lever 2019-12-23 10:28:28 -05:00 коммит произвёл Anna Schumaker
Родитель 6ed2144a80
Коммит abf8af78a6
2 изменённых файлов: 4 добавлений и 1 удалений

Просмотреть файл

@ -185,6 +185,7 @@ DECLARE_EVENT_CLASS(rpc_task_running,
DEFINE_RPC_RUNNING_EVENT(begin); DEFINE_RPC_RUNNING_EVENT(begin);
DEFINE_RPC_RUNNING_EVENT(run_action); DEFINE_RPC_RUNNING_EVENT(run_action);
DEFINE_RPC_RUNNING_EVENT(complete); DEFINE_RPC_RUNNING_EVENT(complete);
DEFINE_RPC_RUNNING_EVENT(signalled);
DEFINE_RPC_RUNNING_EVENT(end); DEFINE_RPC_RUNNING_EVENT(end);
DECLARE_EVENT_CLASS(rpc_task_queued, DECLARE_EVENT_CLASS(rpc_task_queued,

Просмотреть файл

@ -846,6 +846,8 @@ void rpc_signal_task(struct rpc_task *task)
if (!RPC_IS_ACTIVATED(task)) if (!RPC_IS_ACTIVATED(task))
return; return;
trace_rpc_task_signalled(task, task->tk_action);
set_bit(RPC_TASK_SIGNALLED, &task->tk_runstate); set_bit(RPC_TASK_SIGNALLED, &task->tk_runstate);
smp_mb__after_atomic(); smp_mb__after_atomic();
queue = READ_ONCE(task->tk_waitqueue); queue = READ_ONCE(task->tk_waitqueue);
@ -949,7 +951,7 @@ static void __rpc_execute(struct rpc_task *task)
* clean up after sleeping on some queue, we don't * clean up after sleeping on some queue, we don't
* break the loop here, but go around once more. * break the loop here, but go around once more.
*/ */
dprintk("RPC: %5u got signal\n", task->tk_pid); trace_rpc_task_signalled(task, task->tk_action);
set_bit(RPC_TASK_SIGNALLED, &task->tk_runstate); set_bit(RPC_TASK_SIGNALLED, &task->tk_runstate);
task->tk_rpc_status = -ERESTARTSYS; task->tk_rpc_status = -ERESTARTSYS;
rpc_exit(task, -ERESTARTSYS); rpc_exit(task, -ERESTARTSYS);