Date: Thu, 11 Mar 1999 09:10:01 -0800 (PST) From: Cy Schubert <cschuber@uumail.gov.bc.ca> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/10528: MFS fails to die when system shut down Message-ID: <199903111710.JAA18308@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/10528; it has been noted by GNATS.
From: Cy Schubert <cschuber@uumail.gov.bc.ca>
To: Matthew Dillon <dillon@apollo.backplane.com>
Cc: Cy Schubert - ITSD Open Systems Group <Cy.Schubert@uumail.gov.bc.ca>,
freebsd-gnats-submit@FreeBSD.ORG, cschuber@uumail.gov.bc.ca
Subject: Re: kern/10528: MFS fails to die when system shut down
Date: Thu, 11 Mar 1999 08:01:53 -0800
Excellent, thanks.
I will apply your patch on my systems here.
Regards, Phone: (250)387-8437
Cy Schubert Fax: (250)387-5766
Open Systems Group Internet: Cy.Schubert@uumail.gov.bc.ca
ITSD Cy.Schubert@gems8.gov.bc.ca
Province of BC
In message <199903110740.XAA61921@apollo.backplane.com>, Matthew
Dillon writes:
> :Matthew, I've been trying to solve a "syncing filesystems... giving up"
> :problem under 3.1. My first cut was effective under some
> :circumstances, e.g. copying files to MFS but if MFS was used for /tmp
> :and X was in use at the time of the shutdown, my patch would still
> :fail. I've devised a better patch as follows. What do you think?
> :
> :What I've done is change the P_SYSTEM flag to a P_NOSWAP. What I don't
> :understand is the comment about the swapper continuously trying to kill
> :MFS. I can see why you don't want it to swap out, because of potential
> :...
>
> The problem is that if the system runs out of swap space and memory,
> it will attempt to kill the 'largest' process. This from
> vm/vm_pageout.c:
>
> ...
> /*
> * make sure that we have swap space -- if we are low on memory and
> * swap -- then kill the biggest process.
> */
> if ((vm_swap_size == 0 || swap_pager_full) &&
> ((cnt.v_free_count + cnt.v_cache_count) < cnt.v_free_min)) {
> bigproc = NULL;
> bigsize = 0;
> for (p = allproc.lh_first; p != 0; p = p->p_list.le_next) {
> /*
> * if this is a system process, skip it
> */
> if ((p->p_flag & P_SYSTEM) || (p->p_pid == 1) ||
> ((p->p_pid < 48) && (vm_swap_size != 0))) {
> continue;
> }
>
> ...
>
> Current setting P_NOSWAP will not prevent the system from trying to
> kill the process. Perhaps, though, it would be safe to add P_NOSWAP
> in and not have the system try to swap out a P_NOSWAP process either,
> which with your patch would solve both problems.
>
> P_NOSWAP appears to only be set normally when the system is in the
> midst of a fork. I think it would be safe to modify pageout.c from
>
> if ((p->p_flag & P_SYSTEM) || (p->p_pid == 1) || ...
>
> to
>
> if ((p->p_flag & (P_NOSWAP|P_SYSTEM)) || (p->p_pid == 1) || ...
>
> *PLUS* your patch. I will submit your patch, plus my modification
> above, to core.
>
> -Matt
> Matthew Dillon
> <dillon@backplane.com>
>
> :deadlock. It solves a "syncing filesystems" problem during shutdown.
> :I tested during a shutdown while a file is currently being written
> :to /tmp. Previously the system would panic: vinvalbuf: dirty bufs.
> :With the patch below it doesn't do that any more. Does my patch
> :introduce another problem?
> :
> :I'd appreciate some guidance.
> :
> :--- src/sys/ufs/mfs/mfs_vfsops.c.orig Thu Dec 31 20:14:11 1998
> :+++ src/sys/ufs/mfs/mfs_vfsops.c Wed Mar 10 21:08:13 1999
> :@@ -399,7 +399,8 @@
> : * can we swap out this process - not unless you want a deadlock,
> : * anyway.
> : */
> :- curproc->p_flag |= P_SYSTEM;
> :+ /* curproc->p_flag |= P_SYSTEM; */
> :+ curproc->p_flag |= P_NOSWAP;
> :
> : while (mfsp->mfs_active) {
> : while (bp = bufq_first(&mfsp->buf_queue)) {
> :
> :Regards, Phone: (250)387-8437
> :Cy Schubert Fax: (250)387-5766
> :Open Systems Group Internet: Cy.Schubert@uumail.gov.bc.ca
> :ITSD Cy.Schubert@gems8.gov.bc.ca
> :Province of BC
> :
>
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199903111710.JAA18308>
