| version 1.89, 2003/12/29 16:04:58 |
version 1.90, 2004/01/09 19:00:16 |
| Line 937 pool_do_put(struct pool *pp, void *v) |
|
| Line 937 pool_do_put(struct pool *pp, void *v) |
|
| * If this page is now empty, do one of two things: |
* If this page is now empty, do one of two things: |
| * |
* |
| * (1) If we have more pages than the page high water mark, |
* (1) If we have more pages than the page high water mark, |
| * free the page back to the system. |
* 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. |
| * |
* |
| * (2) Otherwise, move the page to the empty page list. |
* (2) Otherwise, move the page to the empty page list. |
| * |
* |
| Line 946 pool_do_put(struct pool *pp, void *v) |
|
| Line 949 pool_do_put(struct pool *pp, void *v) |
|
| */ |
*/ |
| if (ph->ph_nmissing == 0) { |
if (ph->ph_nmissing == 0) { |
| pp->pr_nidle++; |
pp->pr_nidle++; |
| if (pp->pr_npages > pp->pr_maxpages || |
if (pp->pr_npages > pp->pr_minpages && |
| (pp->pr_alloc->pa_flags & PA_WANT) != 0) { |
(pp->pr_npages > pp->pr_maxpages || |
| |
(pp->pr_roflags & PR_IMMEDRELEASE) != 0 || |
| |
(pp->pr_alloc->pa_flags & PA_WANT) != 0)) { |
| pr_rmpage(pp, ph, NULL); |
pr_rmpage(pp, ph, NULL); |
| } else { |
} else { |
| LIST_REMOVE(ph, ph_pagelist); |
LIST_REMOVE(ph, ph_pagelist); |