| 507 | } |
| 508 | |
| 509 | static void |
| 510 | bucket_free(uma_zone_t zone, uma_bucket_t bucket, void *udata) |
| 511 | { |
| 512 | struct uma_bucket_zone *ubz; |
| 513 | |
| 514 | if (bucket->ub_cnt != 0) |
| 515 | bucket_drain(zone, bucket); |
| 516 | |
| 517 | KASSERT(bucket->ub_cnt == 0, |
| 518 | ("bucket_free: Freeing a non free bucket.")); |
| 519 | KASSERT(bucket->ub_seq == SMR_SEQ_INVALID, |
| 520 | ("bucket_free: Freeing an SMR bucket.")); |
| 521 | if ((zone->uz_flags & UMA_ZFLAG_BUCKET) == 0) |
| 522 | udata = (void *)(uintptr_t)zone->uz_flags; |
| 523 | ubz = bucket_zone_lookup(bucket->ub_entries); |
| 524 | uma_zfree_arg(ubz->ubz_zone, bucket, udata); |
| 525 | } |
| 526 | |
| 527 | static void |
| 528 | bucket_zone_drain(void) |
no test coverage detected