[PATCH] knfsd: make sure nfsd doesn't hog a cpu forever
authorNeilBrown <neilb@cse.unsw.edu.au>
Tue, 15 Nov 2005 08:09:10 +0000 (00:09 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Tue, 15 Nov 2005 16:59:19 +0000 (08:59 -0800)
Being kernel-threads, nfsd servers don't get pre-empted (depending on
CONFIG).  If there is a steady stream of NFS requests that can be served
from cache, an nfsd thread may hold on to a cpu indefinitely, which isn't
very friendly.

So it is good to have a cond_resched in there (just before looking for a
new request to serve), to make sure we play nice.

Signed-off-by: Neil Brown <neilb@suse.de>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
net/sunrpc/svcsock.c

index e50e7cf43737b584578e558709a95646ac123d9f..c6a51911e71e082a232f73444b3c36deb42a0d08 100644 (file)
@@ -1178,6 +1178,7 @@ svc_recv(struct svc_serv *serv, struct svc_rqst *rqstp, long timeout)
        arg->tail[0].iov_len = 0;
 
        try_to_freeze();
+       cond_resched();
        if (signalled())
                return -EINTR;