Lines Matching refs:scan
82 static daddr_t blst_leaf_alloc(blmeta_t *scan, daddr_t blk, int count);
83 static daddr_t blst_meta_alloc(blmeta_t *scan, daddr_t blk,
85 static void blst_leaf_free(blmeta_t *scan, daddr_t relblk, int count);
86 static void blst_meta_free(blmeta_t *scan, daddr_t freeBlk, daddr_t count,
88 static void blst_copy(blmeta_t *scan, daddr_t blk, daddr_t radix,
90 static daddr_t blst_radix_init(blmeta_t *scan, daddr_t radix,
261 blst_leaf_alloc(blmeta_t *scan, daddr_t blk, int count) argument
263 u_daddr_t orig = scan->u.bmu_bitmap;
271 scan->bm_bighint = 0;
292 scan->u.bmu_bitmap &= ~(1 << r);
315 scan->u.bmu_bitmap &= ~mask;
324 scan->bm_bighint = count - 1;
338 blst_meta_alloc(blmeta_t *scan, daddr_t blk, daddr_t count, daddr_t radix, argument
344 if (scan->u.bmu_avail == 0) {
348 scan->bm_bighint = count;
352 if (scan->u.bmu_avail == radix) {
360 if (scan[i].bm_bighint == (daddr_t)-1) {
364 scan[i].u.bmu_bitmap = (u_daddr_t)-1;
365 scan[i].bm_bighint = BLIST_BMAP_RADIX;
367 scan[i].bm_bighint = radix;
368 scan[i].u.bmu_avail = radix;
376 if (count <= scan[i].bm_bighint) {
382 r = blst_leaf_alloc(&scan[i], blk, count);
384 r = blst_meta_alloc(&scan[i], blk, count,
388 scan->u.bmu_avail -= count;
389 if (scan->bm_bighint > scan->u.bmu_avail) {
390 scan->bm_bighint = scan->u.bmu_avail;
394 } else if (scan[i].bm_bighint == (daddr_t)-1) {
412 if (scan->bm_bighint >= count) {
413 scan->bm_bighint = count - 1;
424 blst_leaf_free(blmeta_t *scan, daddr_t blk, int count) argument
440 if (scan->u.bmu_bitmap & mask) {
443 scan->u.bmu_bitmap |= mask;
451 scan->bm_bighint = BLIST_BMAP_RADIX;
466 blst_meta_free(blmeta_t *scan, daddr_t freeBlk, daddr_t count, daddr_t radix, argument
479 if (scan->u.bmu_avail == 0) {
484 scan->u.bmu_avail = count;
485 scan->bm_bighint = count;
489 if (scan[i].bm_bighint == (daddr_t)-1) {
492 scan[i].bm_bighint = 0;
494 scan[i].u.bmu_bitmap = 0;
496 scan[i].u.bmu_avail = 0;
502 scan->u.bmu_avail += count;
510 if (scan->u.bmu_avail == radix) {
513 if (scan->u.bmu_avail > radix) {
514 panic("blst_meta_free: freeing already free blocks (%d) %d/%d", count, scan->u.bmu_avail, radix);
535 if (scan->bm_bighint == (daddr_t)-1) {
540 blst_leaf_free(&scan[i], freeBlk, v);
542 blst_meta_free(&scan[i], freeBlk, v, radix,
545 if (scan->bm_bighint < scan[i].bm_bighint) {
546 scan->bm_bighint = scan[i].bm_bighint;
563 blst_copy(blmeta_t *scan, daddr_t blk, daddr_t radix, argument
574 u_daddr_t v = scan->u.bmu_bitmap;
607 if (scan->u.bmu_avail == 0) {
610 if (scan->u.bmu_avail == radix) {
626 if (scan[i].bm_bighint == (daddr_t)-1) {
632 &scan[i],
643 &scan[i],
667 blst_radix_init(blmeta_t *scan, daddr_t radix, int skip, daddr_t count) argument
678 if (scan) {
679 scan->bm_bighint = 0;
680 scan->u.bmu_bitmap = 0;
691 if (scan) {
692 scan->bm_bighint = 0;
693 scan->u.bmu_avail = 0;
705 ((scan) ? &scan[i] : NULL),
716 ((scan) ? &scan[i] : NULL),
726 if (scan) {
727 scan[i].bm_bighint = (daddr_t)-1;
741 blst_radix_print(blmeta_t *scan, daddr_t blk, daddr_t radix, int skip, int tab) argument
752 scan->u.bmu_bitmap,
753 scan->bm_bighint
758 if (scan->u.bmu_avail == 0) {
767 if (scan->u.bmu_avail == radix) {
781 scan->u.bmu_avail,
783 scan->bm_bighint
791 if (scan[i].bm_bighint == (daddr_t)-1) {
801 &scan[i],