Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-2-0]: src/sys/uvm Pull up revision 1.57 (requested by chs in tick...



details:   https://anonhg.NetBSD.org/src/rev/436e1345a3cd
branches:  netbsd-2-0
changeset: 564689:436e1345a3cd
user:      tron <tron%NetBSD.org@localhost>
date:      Wed Mar 16 12:11:08 2005 +0000

description:
Pull up revision 1.57 (requested by chs in ticket #1137):
hack around a UVM problem that causes hangs when large processes fork.
see PR 26908 for details.

diffstat:

 sys/uvm/uvm_amap.c |  15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)

diffs (36 lines):

diff -r 2e08661817da -r 436e1345a3cd sys/uvm/uvm_amap.c
--- a/sys/uvm/uvm_amap.c        Wed Mar 16 12:11:02 2005 +0000
+++ b/sys/uvm/uvm_amap.c        Wed Mar 16 12:11:08 2005 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: uvm_amap.c,v 1.53 2004/03/24 07:50:48 junyoung Exp $   */
+/*     $NetBSD: uvm_amap.c,v 1.53.2.1 2005/03/16 12:11:08 tron Exp $   */
 
 /*
  *
@@ -42,7 +42,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_amap.c,v 1.53 2004/03/24 07:50:48 junyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_amap.c,v 1.53.2.1 2005/03/16 12:11:08 tron Exp $");
 
 #undef UVM_AMAP_INLINE         /* enable/disable amap inlines */
 
@@ -220,6 +220,17 @@
        free(amap->am_slots, M_UVMAMAP);
 fail1:
        pool_put(&uvm_amap_pool, amap);
+
+       /*
+        * XXX hack to tell the pagedaemon how many pages we need,
+        * since we can need more than it would normally free.
+        */
+       if (waitf == M_NOWAIT) {
+               extern int uvm_extrapages;
+               uvm_extrapages += ((sizeof(int) * 2 +
+                                   sizeof(struct vm_anon *)) *
+                                  totalslots) >> PAGE_SHIFT;
+       }
        return (NULL);
 }
 



Home | Main Index | Thread Index | Old Index