 drivers/md/md.c                |    3 +--
 drivers/net/irda/sir_kthread.c |    4 +---
 fs/lockd/clntlock.c            |    1 +
 mm/page_alloc.c                |    1 +
 net/sunrpc/sched.c             |    4 ++++
 5 files changed, 8 insertions(+), 5 deletions(-)
diff -ruNp 233-possibly-reverse.patch-old/drivers/md/md.c 233-possibly-reverse.patch-new/drivers/md/md.c
--- 233-possibly-reverse.patch-old/drivers/md/md.c	2005-07-18 06:36:47.000000000 +1000
+++ 233-possibly-reverse.patch-new/drivers/md/md.c	2005-07-18 08:20:58.000000000 +1000
@@ -40,7 +40,6 @@
 #include <linux/sysctl.h>
 #include <linux/devfs_fs_kernel.h>
 #include <linux/buffer_head.h> /* for invalidate_bdev */
-#include <linux/suspend.h>
 
 #include <linux/init.h>
 
@@ -2952,6 +2951,7 @@ static int md_thread(void * arg)
 	 */
 
 	daemonize(thread->name, mdname(thread->mddev));
+	current->flags |= PF_NOFREEZE;
 
 	current->exit_signal = SIGCHLD;
 	allow_signal(SIGKILL);
@@ -2977,7 +2977,6 @@ static int md_thread(void * arg)
 		wait_event_interruptible_timeout(thread->wqueue,
 						 test_bit(THREAD_WAKEUP, &thread->flags),
 						 thread->timeout);
-		try_to_freeze();
 
 		clear_bit(THREAD_WAKEUP, &thread->flags);
 
diff -ruNp 233-possibly-reverse.patch-old/drivers/net/irda/sir_kthread.c 233-possibly-reverse.patch-new/drivers/net/irda/sir_kthread.c
--- 233-possibly-reverse.patch-old/drivers/net/irda/sir_kthread.c	2005-07-18 06:36:51.000000000 +1000
+++ 233-possibly-reverse.patch-new/drivers/net/irda/sir_kthread.c	2005-07-18 08:20:58.000000000 +1000
@@ -112,6 +112,7 @@ static int irda_thread(void *startup)
 	DECLARE_WAITQUEUE(wait, current);
 
 	daemonize("kIrDAd");
+	current->flags |= PF_NOFREEZE;
 
 	irda_rq_queue.thread = current;
 
@@ -134,9 +135,6 @@ static int irda_thread(void *startup)
 			__set_task_state(current, TASK_RUNNING);
 		remove_wait_queue(&irda_rq_queue.kick, &wait);
 
-		/* make swsusp happy with our thread */
-		try_to_freeze();
-
 		run_irda_queue();
 	}
 
diff -ruNp 233-possibly-reverse.patch-old/fs/lockd/clntlock.c 233-possibly-reverse.patch-new/fs/lockd/clntlock.c
--- 233-possibly-reverse.patch-old/fs/lockd/clntlock.c	2005-07-18 06:36:59.000000000 +1000
+++ 233-possibly-reverse.patch-new/fs/lockd/clntlock.c	2005-07-18 13:48:40.000000000 +1000
@@ -233,6 +233,7 @@ restart:
 
 		fl->fl_u.nfs_fl.flags &= ~NFS_LCK_RECLAIM;
 		nlmclnt_reclaim(host, fl);
+		try_to_freeze();
 		if (signalled())
 			break;
 		goto restart;
diff -ruNp 233-possibly-reverse.patch-old/mm/page_alloc.c 233-possibly-reverse.patch-new/mm/page_alloc.c
--- 233-possibly-reverse.patch-old/mm/page_alloc.c	2005-07-18 13:48:25.000000000 +1000
+++ 233-possibly-reverse.patch-new/mm/page_alloc.c	2005-07-18 08:20:58.000000000 +1000
@@ -949,6 +949,7 @@ rebalance:
 			do_retry = 1;
 	}
 	if (do_retry) {
+		try_to_freeze();
 		blk_congestion_wait(WRITE, HZ/50);
 		goto rebalance;
 	}
diff -ruNp 233-possibly-reverse.patch-old/net/sunrpc/sched.c 233-possibly-reverse.patch-new/net/sunrpc/sched.c
--- 233-possibly-reverse.patch-old/net/sunrpc/sched.c	2005-07-18 06:37:12.000000000 +1000
+++ 233-possibly-reverse.patch-new/net/sunrpc/sched.c	2005-07-18 13:48:41.000000000 +1000
@@ -656,6 +656,9 @@ static int __rpc_execute(struct rpc_task
 
 		/* sync task: sleep here */
 		dprintk("RPC: %4d sync task going to sleep\n", task->tk_pid);
+
+		try_to_freeze();
+
 		/* Note: Caller should be using rpc_clnt_sigmask() */
 		status = out_of_line_wait_on_bit(&task->tk_runstate,
 				RPC_TASK_QUEUED, rpc_wait_bit_interruptible,
@@ -698,6 +701,7 @@ rpc_execute(struct rpc_task *task)
 {
 	BUG_ON(task->tk_active);
 
+	try_to_freeze();
 	task->tk_active = 1;
 	rpc_set_running(task);
 	return __rpc_execute(task);

