diff options
author | dillon <dillon@FreeBSD.org> | 1999-01-01 04:14:11 +0000 |
---|---|---|
committer | dillon <dillon@FreeBSD.org> | 1999-01-01 04:14:11 +0000 |
commit | e4a4ff71802ce68efaa1c69bb97266efedfdfb9b (patch) | |
tree | 0a9fe815b42d499e6efa237875595e5b104f0626 /sys/ufs/mfs/mfs_vfsops.c | |
parent | fe68a835f9f07ade16d0b0d21194999bcaa30f76 (diff) | |
download | FreeBSD-src-e4a4ff71802ce68efaa1c69bb97266efedfdfb9b.zip FreeBSD-src-e4a4ff71802ce68efaa1c69bb97266efedfdfb9b.tar.gz |
The mount_mfs process that stays in a supervisor context handling MFS
I/O requests must be marked P_SYSTEM because if it isn't and the system
decides to swap it or (god forbid) kill it, the system stands a good
chance of locking up.
Diffstat (limited to 'sys/ufs/mfs/mfs_vfsops.c')
-rw-r--r-- | sys/ufs/mfs/mfs_vfsops.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/sys/ufs/mfs/mfs_vfsops.c b/sys/ufs/mfs/mfs_vfsops.c index fa4ffc3..1ea0804 100644 --- a/sys/ufs/mfs/mfs_vfsops.c +++ b/sys/ufs/mfs/mfs_vfsops.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)mfs_vfsops.c 8.11 (Berkeley) 6/19/95 - * $Id: mfs_vfsops.c,v 1.51 1998/10/12 09:02:19 peter Exp $ + * $Id: mfs_vfsops.c,v 1.52 1998/12/07 21:58:49 archie Exp $ */ @@ -391,6 +391,16 @@ mfs_start(mp, flags, p) register int gotsig = 0; base = mfsp->mfs_baseoff; + + /* + * Must set P_SYSTEM to prevent system from trying to kill + * this process. What happens is that the process is unkillable, + * and the swapper loops trying to continuously kill it. Nor + * can we swap out this process - not unless you want a deadlock, + * anyway. + */ + curproc->p_flag |= P_SYSTEM; + while (mfsp->mfs_active) { while (bp = bufq_first(&mfsp->buf_queue)) { bufq_remove(&mfsp->buf_queue, bp); |