summaryrefslogtreecommitdiffstats
path: root/sys/ufs/mfs
diff options
context:
space:
mode:
authordillon <dillon@FreeBSD.org>1999-01-01 04:14:11 +0000
committerdillon <dillon@FreeBSD.org>1999-01-01 04:14:11 +0000
commite4a4ff71802ce68efaa1c69bb97266efedfdfb9b (patch)
tree0a9fe815b42d499e6efa237875595e5b104f0626 /sys/ufs/mfs
parentfe68a835f9f07ade16d0b0d21194999bcaa30f76 (diff)
downloadFreeBSD-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')
-rw-r--r--sys/ufs/mfs/mfs_vfsops.c12
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);
OpenPOWER on IntegriCloud