Skip site navigation (1)Skip section navigation (2)
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>