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:
Родитель
6ed2144a80
Коммит
abf8af78a6
|
@ -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);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче