Re: [PATCH v2] RPC: killing RPC tasks races fixed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux