:> :       David.
:> 
:>     With softupdates turned on?  Softupdates has known problems when a
:>     disk runs out of space.
:
:didn't kirk just fix that?
:
:      __--_|\  Julian Elischer

    I don't recall it being fixed.

    The pmap panics are more telling.  Softupdates has no known bugs that
    cause a pmap panic, but nothing else in the system is currently known to
    cause a pmap panic either except bad hardware.

    But the fact that the bug is occuring in the same place -- during the
    vm_pageout_page_stats() call, could indicate a bug rather then hardware.

    The vm_pageout_page_stats() procedure is really scary -- it's doing a
    bunch of things outside of splvm() that probably should be inside
    splvm(), like checking to see if a page is deactivateable and then
    only entering splvm() to deactivate it (but what if the page changed
    state after the check but before entering splvm()?).  There are a couple
    of places in the kernel where the VM system tries to 'optimize' scans
    by dealing with side effects instead of splvm()ing, and this is one of
    them.

    I think it may be worth having David do a quick patch to see if it
    helps.  David, try the following brute-force patch and see if it helps.

    Also, is this an SMP box or not?

                                        -Matt
                                        Matthew Dillon 
                                        <[EMAIL PROTECTED]>

Index: vm_pageout.c
===================================================================
RCS file: /home/ncvs/src/sys/vm/vm_pageout.c,v
retrieving revision 1.151
diff -u -r1.151 vm_pageout.c
--- vm_pageout.c        1999/12/11 16:13:02     1.151
+++ vm_pageout.c        2000/02/23 17:23:23
@@ -1151,6 +1151,7 @@
        int pcount,tpcount;             /* Number of pages to check */
        static int fullintervalcount = 0;
        int page_shortage;
+       int s0;
 
        page_shortage = 
            (cnt.v_inactive_target + cnt.v_cache_max + cnt.v_free_min) -
@@ -1159,6 +1160,8 @@
        if (page_shortage <= 0)
                return;
 
+       s0 = splvm();
+
        pcount = cnt.v_active_count;
        fullintervalcount += vm_pageout_stats_interval;
        if (fullintervalcount < vm_pageout_full_stats_interval) {
@@ -1227,6 +1230,7 @@
 
                m = next;
        }
+       splx(s0);
 }
 
 static int


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to