SUNRPC: allow svc_recv to break out of 500ms sleep when alloc_page fails
authorJeff Layton <jlayton@redhat.com>
Tue, 12 Feb 2008 16:47:24 +0000 (11:47 -0500)
committerJ. Bruce Fields <bfields@citi.umich.edu>
Wed, 23 Apr 2008 20:13:38 +0000 (16:13 -0400)
commit7b54fe61ffd5bfa4e50d371a2415225aa0cbb38e
tree6da4eb10c73ca75ff7cc94c11cfb11cd102447c4
parent6aaa67b5f3b9fe24f0c76d0415cc72e5a1137bea
SUNRPC: allow svc_recv to break out of 500ms sleep when alloc_page fails

svc_recv() calls alloc_page(), and if it fails it does a 500ms
uninterruptible sleep and then reattempts. There doesn't seem to be any
real reason for this to be uninterruptible, so change it to an
interruptible sleep. Also check for kthread_stop() and signalled() after
setting the task state to avoid races that might lead to sleeping after
kthread_stop() wakes up the task.

I've done some very basic smoke testing with this, but obviously it's
hard to test the actual changes since this all depends on an
alloc_page() call failing.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
net/sunrpc/svc_xprt.c