summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>1999-03-12 00:44:03 +0000
committerjulian <julian@FreeBSD.org>1999-03-12 00:44:03 +0000
commit4726cfcda9bf1e3d68640fb7dd5cc879b69cc5ab (patch)
tree9a4885b54f387e9aa2500d74a2fed4c8a1c9e1cd /sys
parent98732386971c5984171195f55cd5ff92729bb5f5 (diff)
downloadFreeBSD-src-4726cfcda9bf1e3d68640fb7dd5cc879b69cc5ab.zip
FreeBSD-src-4726cfcda9bf1e3d68640fb7dd5cc879b69cc5ab.tar.gz
Stop the mfs from trying to swap out crucial bits of the mfs
as this can lead to deadlock. Submitted by: Mat dillon <dillon@freebsd.org>
Diffstat (limited to 'sys')
-rw-r--r--sys/ufs/mfs/mfs_vfsops.c14
-rw-r--r--sys/vm/vm_pageout.c4
2 files changed, 9 insertions, 9 deletions
diff --git a/sys/ufs/mfs/mfs_vfsops.c b/sys/ufs/mfs/mfs_vfsops.c
index 2bbacd9..9e470f0 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.55 1999/01/21 09:24:46 dillon Exp $
+ * $Id: mfs_vfsops.c,v 1.56 1999/01/28 00:57:54 dillon Exp $
*/
@@ -396,13 +396,13 @@ mfs_start(mp, flags, p)
register int gotsig = 0;
/*
- * 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.
+ * We must set P_NOSWAP to prevent the system from trying to swap
+ * out or kill ( when swap space is low, see vm/pageout.c ) the
+ * process. A deadlock can occur if the process is swapped out,
+ * and the system can loop trying to kill the unkillable ( while
+ * references exist ) MFS process when swap space is low.
*/
- curproc->p_flag |= P_SYSTEM;
+ curproc->p_flag |= P_NOSWAP;
while (mfsp->mfs_active) {
int s;
diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c
index 5f1b56d..8a1ffcc 100644
--- a/sys/vm/vm_pageout.c
+++ b/sys/vm/vm_pageout.c
@@ -65,7 +65,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_pageout.c,v 1.136 1999/02/08 00:37:36 dillon Exp $
+ * $Id: vm_pageout.c,v 1.138 1999/02/19 19:14:48 luoqi Exp $
*/
/*
@@ -1144,7 +1144,7 @@ rescan0:
/*
* if this is a system process, skip it
*/
- if ((p->p_flag & P_SYSTEM) || (p->p_pid == 1) ||
+ if ((p->p_flag & (P_SYSTEM|P_NOSWAP)) || (p->p_pid == 1) ||
((p->p_pid < 48) && (vm_swap_size != 0))) {
continue;
}
OpenPOWER on IntegriCloud