Lines Matching refs:cdp

399 	struct chunk_desc *cdp, *empty_cdp;  in chunk_ref()  local
406 LIST_FOREACH(cdp, &da->chunk_hashtbl[hash & CHUNK_HASH_MASK], in chunk_ref()
408 if (cdp->cd_hash != hash || cdp->cd_cur_size != size || in chunk_ref()
409 memcmp(&da->range_tbl[base], &da->range_tbl[cdp->cd_base], in chunk_ref()
413 fdesc->base = cdp->cd_base; in chunk_ref()
414 cdp->cd_refcnt++; in chunk_ref()
419 for (cdp = NULL, i = size; cdp == NULL && i < UNUSED_BUCKETS; i++) in chunk_ref()
420 cdp = LIST_FIRST(&da->unused_chunks[i]); in chunk_ref()
422 if (cdp == NULL) in chunk_ref()
424 if (empty_cdp->cd_max_size >= size && (cdp == NULL || in chunk_ref()
425 empty_cdp->cd_max_size < cdp->cd_max_size)) { in chunk_ref()
426 cdp = empty_cdp; in chunk_ref()
431 if (cdp != NULL) { in chunk_ref()
433 bcopy(&da->range_tbl[fdesc->base], &da->range_tbl[cdp->cd_base], in chunk_ref()
435 fdesc->base = cdp->cd_base; in chunk_ref()
437 da->unused_chunks_size -= cdp->cd_max_size; in chunk_ref()
438 if (cdp->cd_max_size > size) { in chunk_ref()
443 LIST_INSERT_BEFORE(cdp, empty_cdp, cd_all_le); in chunk_ref()
444 empty_cdp->cd_base = cdp->cd_base + size; in chunk_ref()
446 empty_cdp->cd_max_size = cdp->cd_max_size - size; in chunk_ref()
455 cdp->cd_max_size = size; in chunk_ref()
457 LIST_REMOVE(cdp, cd_hash_le); in chunk_ref()
460 cdp = uma_zalloc(chunk_zone, M_NOWAIT); in chunk_ref()
461 if (cdp == NULL) in chunk_ref()
463 cdp->cd_max_size = size; in chunk_ref()
464 cdp->cd_base = fdesc->base; in chunk_ref()
465 LIST_INSERT_HEAD(&da->all_chunks, cdp, cd_all_le); in chunk_ref()
466 MPASS(cdp->cd_base + cdp->cd_max_size == da->rtbl_top); in chunk_ref()
469 cdp->cd_hash = hash; in chunk_ref()
470 cdp->cd_refcnt = 1; in chunk_ref()
471 cdp->cd_cur_size = size; in chunk_ref()
472 LIST_INSERT_HEAD(&da->chunk_hashtbl[hash & CHUNK_HASH_MASK], cdp, in chunk_ref()
502 struct chunk_desc *cdp, *cdp2; in chunk_unref() local
509 LIST_FOREACH(cdp, &da->chunk_hashtbl[hash & CHUNK_HASH_MASK], in chunk_unref()
511 if (cdp->cd_hash == hash && cdp->cd_cur_size == size && in chunk_unref()
512 memcmp(&da->range_tbl[base], &da->range_tbl[cdp->cd_base], in chunk_unref()
516 MPASS(cdp != NULL); in chunk_unref()
517 if (--cdp->cd_refcnt > 0) in chunk_unref()
520 LIST_REMOVE(cdp, cd_hash_le); in chunk_unref()
521 da->unused_chunks_size += cdp->cd_max_size; in chunk_unref()
522 cdp->cd_cur_size = 0; in chunk_unref()
525 cdp2 = LIST_NEXT(cdp, cd_all_le); in chunk_unref()
527 MPASS(cdp2->cd_base + cdp2->cd_max_size == cdp->cd_base); in chunk_unref()
528 LIST_REMOVE(cdp, cd_all_le); in chunk_unref()
530 cdp2->cd_max_size += cdp->cd_max_size; in chunk_unref()
531 uma_zfree(chunk_zone, cdp); in chunk_unref()
532 cdp = cdp2; in chunk_unref()
536 cdp2 = LIST_PREV(cdp, &da->all_chunks, chunk_desc, cd_all_le); in chunk_unref()
538 MPASS(cdp->cd_base + cdp->cd_max_size == cdp2->cd_base); in chunk_unref()
539 LIST_REMOVE(cdp, cd_all_le); in chunk_unref()
541 cdp2->cd_max_size += cdp->cd_max_size; in chunk_unref()
542 cdp2->cd_base = cdp->cd_base; in chunk_unref()
543 uma_zfree(chunk_zone, cdp); in chunk_unref()
544 cdp = cdp2; in chunk_unref()
547 if (cdp->cd_base + cdp->cd_max_size == da->rtbl_top) { in chunk_unref()
549 MPASS(cdp == LIST_FIRST(&da->all_chunks)); in chunk_unref()
550 da->rtbl_top -= cdp->cd_max_size; in chunk_unref()
551 da->unused_chunks_size -= cdp->cd_max_size; in chunk_unref()
552 LIST_REMOVE(cdp, cd_all_le); in chunk_unref()
553 uma_zfree(chunk_zone, cdp); in chunk_unref()
557 i = cdp->cd_max_size; in chunk_unref()
560 LIST_INSERT_HEAD(&da->unused_chunks[i], cdp, cd_hash_le); in chunk_unref()
848 struct chunk_desc *cdp; in dxr_build() local
918 while ((cdp = LIST_FIRST(&da->all_chunks)) != NULL) { in dxr_build()
919 LIST_REMOVE(cdp, cd_all_le); in dxr_build()
920 uma_zfree(chunk_zone, cdp); in dxr_build()
1123 struct chunk_desc *cdp; in dxr_destroy() local
1133 while ((cdp = LIST_FIRST(&da->all_chunks)) != NULL) { in dxr_destroy()
1134 LIST_REMOVE(cdp, cd_all_le); in dxr_destroy()
1135 uma_zfree(chunk_zone, cdp); in dxr_destroy()