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

Next file: linux/net/sunrpc/svcsock.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.119/linux/net/sunrpc/sched.c linux/net/sunrpc/sched.c
@@ -416,8 +416,11 @@
 			current->timeout = 0;
 			sleep_on(&task->tk_wait);
 
-			/* When the task received a signal, remove from
-			 * any queues etc, and make runnable again. */
+			/*
+			 * When the task received a signal, remove from
+			 * any queues etc, and make runnable again.
+			 */
+			checksignals();
 			if (signalled())
 				__rpc_wake_up(task);
 
@@ -432,6 +435,7 @@
 		 * clean up after sleeping on some queue, we don't
 		 * break the loop here, but go around once more.
 		 */
+		checksignals();
 		if (!RPC_IS_ASYNC(task) && signalled()) {
 			dprintk("RPC: %4d got signal\n", task->tk_pid);
 			rpc_exit(task, -ERESTARTSYS);
@@ -551,6 +555,7 @@
 		if (flags & RPC_TASK_ASYNC)
 			return NULL;
 		current->timeout = jiffies + (HZ >> 4);
+		checksignals();
 		current->state = TASK_INTERRUPTIBLE;
 		schedule();
 	} while (!signalled());
@@ -797,6 +802,7 @@
 
 	dprintk("RPC: rpciod starting (pid %d)\n", rpciod_pid);
 	while (rpciod_users) {
+		checksignals();
 		if (signalled()) {
 			rpciod_killall();
 			flush_signals(current);
@@ -925,6 +931,7 @@
 	 */
 	while (rpciod_pid) {
 		dprintk("rpciod_down: waiting for pid %d to exit\n", rpciod_pid);
+		checksignals();
 		if (signalled()) {
 			dprintk("rpciod_down: caught signal\n");
 			break;

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