Lines Matching refs:cb

75 ldl_strategy_done(buf_t *cb)  in ldl_strategy_done()  argument
81 ASSERT(SEMA_HELD(&cb->b_sem)); in ldl_strategy_done()
82 ASSERT((cb->b_flags & B_DONE) == 0); in ldl_strategy_done()
87 lbp = (lufs_buf_t *)cb; in ldl_strategy_done()
90 if (cb->b_flags & B_ERROR) in ldl_strategy_done()
97 if (atomic_add_long_nv(&sv->sv_nb_left, -cb->b_bcount)) { in ldl_strategy_done()
166 buf_t *cb; in ldl_strategy() local
194 cb = bioclone(pb, offset, pbcount, dev, in ldl_strategy()
202 cb->b_flags |= B_ERROR; in ldl_strategy()
203 cb->b_resid = cb->b_bcount; in ldl_strategy()
204 biodone(cb); in ldl_strategy()
226 fssnap_strategy(&ufsvfsp->vfs_snapshot, cb); in ldl_strategy()
231 (void) bdev_strategy(cb); in ldl_strategy()
300 cirbuf_t *cb = &ul->un_wrbuf; in push_dirty_bp() local
302 ASSERT(bp == cb->cb_bp && bp == cb->cb_dirty); in push_dirty_bp()
313 cb->cb_dirty = NULL; in push_dirty_bp()
325 if ((newbp = cb->cb_free) != NULL) { in push_dirty_bp()
326 cb->cb_free = newbp->b_forw; in push_dirty_bp()
343 rw_enter(&cb->cb_rwlock, RW_WRITER); in push_dirty_bp()
348 rw_exit(&cb->cb_rwlock); in push_dirty_bp()
352 inval_range(ml_unit_t *ul, cirbuf_t *cb, off_t lof, off_t nb) in inval_range() argument
362 rw_enter(&cb->cb_rwlock, RW_WRITER); in inval_range()
363 bp = cb->cb_bp; in inval_range()
365 if (bp == cb->cb_dirty || bp->b_bcount == 0) { in inval_range()
381 } while (bp != cb->cb_bp); in inval_range()
382 rw_exit(&cb->cb_rwlock); in inval_range()
394 cirbuf_t *cb = &ul->un_wrbuf; in get_write_bp() local
400 if ((bp = cb->cb_dirty) != NULL) { in get_write_bp()
408 inval_range(ul, cb, ul->un_tail_lof, 1); in get_write_bp()
413 rw_enter(&cb->cb_rwlock, RW_WRITER); in get_write_bp()
414 bp = cb->cb_bp->b_forw; in get_write_bp()
417 cb->cb_dirty = bp; in get_write_bp()
418 cb->cb_bp = bp; in get_write_bp()
424 rw_exit(&cb->cb_rwlock); in get_write_bp()
436 alloc_wrbuf(cirbuf_t *cb, size_t bufsize) in alloc_wrbuf() argument
444 if (cb->cb_nb) in alloc_wrbuf()
445 free_cirbuf(cb); in alloc_wrbuf()
447 bzero(cb, sizeof (*cb)); in alloc_wrbuf()
448 rw_init(&cb->cb_rwlock, NULL, RW_DRIVER, NULL); in alloc_wrbuf()
450 rw_enter(&cb->cb_rwlock, RW_WRITER); in alloc_wrbuf()
460 bp->b_forw = cb->cb_free; in alloc_wrbuf()
461 cb->cb_free = bp; in alloc_wrbuf()
464 cb->cb_va = kmem_alloc(bufsize, KM_SLEEP); in alloc_wrbuf()
465 cb->cb_nb = bufsize; in alloc_wrbuf()
470 bp = cb->cb_free; in alloc_wrbuf()
471 cb->cb_free = bp->b_forw; in alloc_wrbuf()
475 cb->cb_bp = bp; in alloc_wrbuf()
476 bp->b_un.b_addr = cb->cb_va; in alloc_wrbuf()
477 bp->b_bufsize = cb->cb_nb; in alloc_wrbuf()
479 rw_exit(&cb->cb_rwlock); in alloc_wrbuf()
483 alloc_rdbuf(cirbuf_t *cb, size_t bufsize, size_t blksize) in alloc_rdbuf() argument
492 if (cb->cb_nb) in alloc_rdbuf()
493 free_cirbuf(cb); in alloc_rdbuf()
495 bzero(cb, sizeof (*cb)); in alloc_rdbuf()
496 rw_init(&cb->cb_rwlock, NULL, RW_DRIVER, NULL); in alloc_rdbuf()
498 rw_enter(&cb->cb_rwlock, RW_WRITER); in alloc_rdbuf()
500 cb->cb_va = kmem_alloc(bufsize, KM_SLEEP); in alloc_rdbuf()
501 cb->cb_nb = bufsize; in alloc_rdbuf()
508 va = cb->cb_va; in alloc_rdbuf()
518 if (cb->cb_bp) { in alloc_rdbuf()
519 bp->b_forw = cb->cb_bp->b_forw; in alloc_rdbuf()
520 bp->b_back = cb->cb_bp; in alloc_rdbuf()
521 cb->cb_bp->b_forw->b_back = bp; in alloc_rdbuf()
522 cb->cb_bp->b_forw = bp; in alloc_rdbuf()
525 cb->cb_bp = bp; in alloc_rdbuf()
530 rw_exit(&cb->cb_rwlock); in alloc_rdbuf()
534 free_cirbuf(cirbuf_t *cb) in free_cirbuf() argument
538 if (cb->cb_nb == 0) in free_cirbuf()
541 rw_enter(&cb->cb_rwlock, RW_WRITER); in free_cirbuf()
542 ASSERT(cb->cb_dirty == NULL); in free_cirbuf()
547 while ((bp = cb->cb_bp) != NULL) { in free_cirbuf()
549 cb->cb_bp = NULL; in free_cirbuf()
551 cb->cb_bp = bp->b_forw; in free_cirbuf()
562 while ((bp = cb->cb_free) != NULL) { in free_cirbuf()
563 cb->cb_free = bp->b_forw; in free_cirbuf()
568 kmem_free(cb->cb_va, cb->cb_nb); in free_cirbuf()
569 cb->cb_va = NULL; in free_cirbuf()
570 cb->cb_nb = 0; in free_cirbuf()
571 rw_exit(&cb->cb_rwlock); in free_cirbuf()
572 rw_destroy(&cb->cb_rwlock); in free_cirbuf()
584 find_bp(ml_unit_t *ul, cirbuf_t *cb, off_t lof) in find_bp() argument
591 rw_enter(&cb->cb_rwlock, RW_READER); in find_bp()
592 bp = cb->cb_bp; in find_bp()
597 rw_exit(&cb->cb_rwlock); in find_bp()
601 } while (bp != cb->cb_bp); in find_bp()
602 rw_exit(&cb->cb_rwlock); in find_bp()
608 find_read_lof(ml_unit_t *ul, cirbuf_t *cb, off_t lof) in find_read_lof() argument
619 rw_enter(&cb->cb_rwlock, RW_READER); in find_read_lof()
620 bpend = bp = cb->cb_bp->b_forw; in find_read_lof()
629 rw_exit(&cb->cb_rwlock); in find_read_lof()
642 cirbuf_t *cb; in get_read_bp() local
661 cb = &ul->un_rdbuf; in get_read_bp()
662 rw_enter(&cb->cb_rwlock, RW_WRITER); in get_read_bp()
663 bp = cb->cb_bp->b_forw; in get_read_bp()
667 cb->cb_bp = bp; in get_read_bp()
668 rw_exit(&cb->cb_rwlock); in get_read_bp()
688 extend_write_bp(ml_unit_t *ul, cirbuf_t *cb, buf_t *bp) in extend_write_bp() argument
692 ASSERT(bp == cb->cb_bp && bp == cb->cb_dirty); in extend_write_bp()
716 rw_enter(&cb->cb_rwlock, RW_WRITER); in extend_write_bp()
730 bpforw->b_forw = cb->cb_free; in extend_write_bp()
731 cb->cb_free = bpforw; in extend_write_bp()
733 rw_exit(&cb->cb_rwlock); in extend_write_bp()
745 cirbuf_t *cb = &ul->un_wrbuf; in storebuf() local
778 if (!extend_write_bp(ul, cb, bp)) { in storebuf()
897 cirbuf_t *cb = &ul->un_wrbuf; in ldl_round_commit() local
902 if ((bp = cb->cb_dirty) == NULL) in ldl_round_commit()
947 cirbuf_t *cb = &ul->un_wrbuf; in ldl_push_commit() local
952 if ((bp = cb->cb_dirty) == NULL) in ldl_push_commit()
1064 cirbuf_t *cb = &ul->un_wrbuf; in ldl_waito() local
1066 rw_enter(&cb->cb_rwlock, RW_WRITER); in ldl_waito()
1070 bp = cb->cb_bp; in ldl_waito()
1077 } while (bp != cb->cb_bp); in ldl_waito()
1078 rw_exit(&cb->cb_rwlock); in ldl_waito()