Freezer / sunrpc / NFS: don't allow TASK_KILLABLE sleeps to block the freezer
authorJeff Layton <jlayton@redhat.com>
Thu, 1 Dec 2011 21:44:39 +0000 (22:44 +0100)
committerRafael J. Wysocki <rjw@sisk.pl>
Tue, 6 Dec 2011 21:12:27 +0000 (22:12 +0100)
commitd310310cbff18ec385c6ab4d58f33b100192a96a
tree801dbbef1552256e7cefc7ec08dcd41b30a9930b
parent62c9ea6b120688d800b4d892eaf737c20a73e86b
Freezer / sunrpc / NFS: don't allow TASK_KILLABLE sleeps to block the freezer

Allow the freezer to skip wait_on_bit_killable sleeps in the sunrpc
layer. This should allow suspend and hibernate events to proceed, even
when there are RPC's pending on the wire.

Also, wrap the TASK_KILLABLE sleeps in NFS layer in freezer_do_not_count
and freezer_count calls. This allows the freezer to skip tasks that are
sleeping while looping on EJUKEBOX or NFS4ERR_DELAY sorts of errors.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
fs/nfs/inode.c
fs/nfs/nfs3proc.c
fs/nfs/nfs4proc.c
fs/nfs/proc.c
include/linux/freezer.h
net/sunrpc/sched.c