patch-2.1.117 linux/net/sunrpc/sched.c

Next file: linux/net/sunrpc/sunrpc_syms.c
Previous file: linux/net/sunrpc/clnt.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.116/linux/net/sunrpc/sched.c linux/net/sunrpc/sched.c
@@ -352,6 +352,7 @@
 /*
  * This is the RPC `scheduler' (or rather, the finite state machine).
  */
+
 static int
 __rpc_execute(struct rpc_task *task)
 {
@@ -415,10 +416,16 @@
 				printk("RPC: rpciod waiting on sync task!\n");
 			current->timeout = 0;
 			sleep_on(&task->tk_wait);
-
+			
 			/* When the task received a signal, remove from
-			 * any queues etc, and make runnable again. */
-			if (0 && signalled())
+			 * any queues etc, and make runnable again.
+			 *
+			 * The "intr" property isnt handled here. rpc_do_call
+			 * has changed the signal mask of the process for
+			 * a synchronous rpc call. If a signal gets through
+			 * this then its real.
+			 */
+			if (signalled())
 				__rpc_wake_up(task);
 
 			dprintk("RPC: %4d sync task resuming\n",
@@ -432,7 +439,7 @@
 		 * clean up after sleeping on some queue, we don't
 		 * break the loop here, but go around once more.
 		 */
-		if (0 && !RPC_IS_ASYNC(task) && signalled()) {
+		if (!RPC_IS_ASYNC(task) && signalled()) {
 			dprintk("RPC: %4d got signal\n", task->tk_pid);
 			rpc_exit(task, -ERESTARTSYS);
 		}

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov