| version 1.105, 2005/10/16 02:21:40 |
version 1.106, 2005/10/16 02:55:18 |
| Line 2068 pool_cache_destruct_object(struct pool_c |
|
| Line 2068 pool_cache_destruct_object(struct pool_c |
|
| } |
} |
| |
|
| static void |
static void |
| pool_do_cache_invalidate_grouplist(struct pool_cache_group *pcg, |
pool_do_cache_invalidate_grouplist(struct pool_cache_grouplist *pcgsl, |
| struct pool_cache *pc, struct pool_pagelist *pq, |
struct pool_cache *pc, struct pool_pagelist *pq, |
| struct pool_cache_grouplist *pcgl) |
struct pool_cache_grouplist *pcgdl) |
| { |
{ |
| struct pool_cache_group *npcg; |
struct pool_cache_group *pcg, *npcg; |
| void *object; |
void *object; |
| |
|
| for (; pcg != NULL; pcg = npcg) { |
for (pcg = LIST_FIRST(pcgsl); pcg != NULL; pcg = npcg) { |
| npcg = LIST_NEXT(pcg, pcg_list); |
npcg = LIST_NEXT(pcg, pcg_list); |
| while (pcg->pcg_avail != 0) { |
while (pcg->pcg_avail != 0) { |
| pc->pc_nitems--; |
pc->pc_nitems--; |
| Line 2086 pool_do_cache_invalidate_grouplist(struc |
|
| Line 2086 pool_do_cache_invalidate_grouplist(struc |
|
| } |
} |
| pc->pc_ngroups--; |
pc->pc_ngroups--; |
| LIST_REMOVE(pcg, pcg_list); |
LIST_REMOVE(pcg, pcg_list); |
| LIST_INSERT_HEAD(pcgl, pcg, pcg_list); |
LIST_INSERT_HEAD(pcgdl, pcg, pcg_list); |
| } |
} |
| } |
} |
| |
|
| Line 2098 pool_do_cache_invalidate(struct pool_cac |
|
| Line 2098 pool_do_cache_invalidate(struct pool_cac |
|
| LOCK_ASSERT(simple_lock_held(&pc->pc_slock)); |
LOCK_ASSERT(simple_lock_held(&pc->pc_slock)); |
| LOCK_ASSERT(simple_lock_held(&pc->pc_pool->pr_slock)); |
LOCK_ASSERT(simple_lock_held(&pc->pc_pool->pr_slock)); |
| |
|
| pool_do_cache_invalidate_grouplist(LIST_FIRST(&pc->pc_fullgroups), |
pool_do_cache_invalidate_grouplist(&pc->pc_fullgroups, pc, pq, pcgl); |
| pc, pq, pcgl); |
pool_do_cache_invalidate_grouplist(&pc->pc_partgroups, pc, pq, pcgl); |
| pool_do_cache_invalidate_grouplist(LIST_FIRST(&pc->pc_partgroups), |
|
| pc, pq, pcgl); |
|
| |
|
| KASSERT(LIST_EMPTY(&pc->pc_partgroups)); |
KASSERT(LIST_EMPTY(&pc->pc_partgroups)); |
| KASSERT(LIST_EMPTY(&pc->pc_fullgroups)); |
KASSERT(LIST_EMPTY(&pc->pc_fullgroups)); |