On Thu, 2011-03-17 at 15:54:23 2011-03-17 at 18:43 +0300, Stanislav Kinsbursky wrote: > RPC task RPC_TASK_QUEUED bit is set must be checked before trying to wake up > task rpc_killall_tasks() because task->tk_waitqueue can not be set (equal to > NULL). > Also, as Trond Myklebust mentioned, such approach (instead of checking > tk_waitqueue to NULL) allows us to "optimise away the call to > rpc_wake_up_queued_task() altogether for those > tasks that aren't queued". you mentioned earlier that you have found this problem in .32 kernel but your patch only works for newer kernels. does the following patch is correct and needed for pre .36 kernels? --- a/net/sunrpc/sched.c 2011-03-22 16:55:36.802000287 +0300 +++ b/net/sunrpc/sched.c 2011-03-22 17:01:13.858000242 +0300 @@ -939,7 +939,8 @@ if (!(rovr->tk_flags & RPC_TASK_KILLED)) { rovr->tk_flags |= RPC_TASK_KILLED; rpc_exit(rovr, -EIO); - rpc_wake_up_task(rovr); + if (RPC_IS_QUEUED(rovr)) + rpc_wake_up_task(rovr); } } spin_unlock(&clnt->cl_lock); -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html