On Thu, 2025-01-16 at 19:43 +0800, yangerkun wrote:
Hi,
Thanks for the patch.
Before 39494194f93b("SUNRPC: Fix races with rpc_killall_tasks()",
every
time we set RPC_TASK_SIGNALLED, when we go through __rpc_execute,
this
rpc_task will immediate break and exist.
However after that, __rpc_execute won't judge RPC_TASK_SIGNNALED, so
for
the case like you point out below, even after your commit
rpc_check_timeout will help break and exist eventually, but this
rpc_task has already do some work. I prefer reintroduce judging
RPC_TASK_SIGNNALED in __rpc_execute to help exist immediatly.
Better yet... Let's get rid of the RPC_TASK_SIGNALLED flag altogether
and just replace
#define RPC_TASK_SIGNALLED(task) (READ_ONCE(task->tk_rpc_status) == -ERESTARTSYS)
There is no good reason to try to maintain two completely separate
sources of truth to describe the same task state.