nfsiod sould not terminate on SIGTERM

Zoltan Hidvegi (hzoli@cs.elte.hu)
Fri, 17 Jan 1997 23:06:01 +0100 (MET)


During a shutdown TERM signal is sent to all processes which kill nfsiod
while other processes are trying to save their state. As nfsiod went away
it is no longer possible to use nfs volumes mounted with rsize 4096 or
more. It is even worse, the nfs module generates a kernel oops, when a
process tries to save its state without nfsiod running. After this oops
the use count of the nfs volume does not go to zero and it is no longer
possible to umount it. This often causes incomplete umount before reboot
is called and it sometimes leads to filesystem corruption.

This patch just ignores SIGTERM in nfsiod, but any other signal can be used
to terminate it.

Zoltan

diff -u fs/nfs/nfsiod.c~ fs/nfs/nfsiod.c
--- fs/nfs/nfsiod.c~ Mon Jul 8 22:32:38 1996
+++ fs/nfs/nfsiod.c Fri Jan 17 22:46:56 1997
@@ -101,6 +101,7 @@
dprintk("BIO: nfsiod %d waiting\n", current->pid);
interruptible_sleep_on(&req->rq_wait);

+ current->signal &= ~(1<<(SIGTERM-1));
if (current->signal & ~current->blocked)
break;
if (!req->rq_rpcreq.rq_slot)