mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-12-03 10:29:15 +00:00
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>
This commit is contained in:
parent
93263596ac
commit
51df594922
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=44675
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user