Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/kern/subr_pool.c,v rcsdiff: /ftp/cvs/cvsroot/src/sys/kern/subr_pool.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.87.2.1 retrieving revision 1.95 diff -u -p -r1.87.2.1 -r1.95 --- src/sys/kern/subr_pool.c 2004/08/03 10:52:55 1.87.2.1 +++ src/sys/kern/subr_pool.c 2004/05/20 05:08:29 1.95 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_pool.c,v 1.87.2.1 2004/08/03 10:52:55 skrll Exp $ */ +/* $NetBSD: subr_pool.c,v 1.95 2004/05/20 05:08:29 atatat Exp $ */ /*- * Copyright (c) 1997, 1999, 2000 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: subr_pool.c,v 1.87.2.1 2004/08/03 10:52:55 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_pool.c,v 1.95 2004/05/20 05:08:29 atatat Exp $"); #include "opt_pool.h" #include "opt_poollog.h" @@ -975,7 +975,8 @@ pool_do_put(struct pool *pp, void *v) * If this page is now empty, do one of two things: * * (1) If we have more pages than the page high water mark, - * free the page back to the system. ONLY CONSIDER + * or if we are flagged as immediately freeing back idle + * pages, free the page back to the system. ONLY CONSIDER * FREEING BACK A PAGE IF WE HAVE MORE THAN OUR MINIMUM PAGE * CLAIM. * @@ -988,6 +989,7 @@ pool_do_put(struct pool *pp, void *v) pp->pr_nidle++; if (pp->pr_npages > pp->pr_minpages && (pp->pr_npages > pp->pr_maxpages || + (pp->pr_roflags & PR_IMMEDRELEASE) != 0 || (pp->pr_alloc->pa_flags & PA_WANT) != 0)) { simple_unlock(&pp->pr_slock); pr_rmpage(pp, ph, NULL);