| version 1.103, 2005/10/15 21:22:46 |
version 1.104, 2005/10/16 00:28:04 |
| Line 2077 pool_do_cache_invalidate(struct pool_cac |
|
| Line 2077 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)); |
| |
|
| for (pcg = LIST_FIRST(&pc->pc_fullgroups); pcg != NULL; pcg = npcg) { |
for (pcg = LIST_FIRST(&pc->pc_fullgroups); pcg != NULL; |
| |
pcg = npcg ? npcg : LIST_FIRST(&pc->pc_partgroups)) { |
| loop: |
|
| 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--; |
|
|
| LIST_REMOVE(pcg, pcg_list); |
LIST_REMOVE(pcg, pcg_list); |
| LIST_INSERT_HEAD(pcgl, pcg, pcg_list); |
LIST_INSERT_HEAD(pcgl, pcg, pcg_list); |
| } |
} |
| pcg = LIST_FIRST(&pc->pc_partgroups); |
|
| if (pcg != NULL) { |
|
| goto loop; |
|
| } |
|
| |
|
| KASSERT(LIST_EMPTY(&pc->pc_partgroups)); |
KASSERT(LIST_EMPTY(&pc->pc_partgroups)); |
| KASSERT(LIST_EMPTY(&pc->pc_fullgroups)); |
KASSERT(LIST_EMPTY(&pc->pc_fullgroups)); |