Lines Matching refs:rl

137 zfs_rangelock_init(zfs_rangelock_t *rl, zfs_rangelock_cb_t *cb, void *arg)  in zfs_rangelock_init()  argument
139 mutex_init(&rl->rl_lock, NULL, MUTEX_DEFAULT, NULL); in zfs_rangelock_init()
140 avl_create(&rl->rl_tree, zfs_rangelock_compare, in zfs_rangelock_init()
142 rl->rl_cb = cb; in zfs_rangelock_init()
143 rl->rl_arg = arg; in zfs_rangelock_init()
147 zfs_rangelock_fini(zfs_rangelock_t *rl) in zfs_rangelock_fini() argument
149 mutex_destroy(&rl->rl_lock); in zfs_rangelock_fini()
150 avl_destroy(&rl->rl_tree); in zfs_rangelock_fini()
158 zfs_rangelock_enter_writer(zfs_rangelock_t *rl, zfs_locked_range_t *new, in zfs_rangelock_enter_writer() argument
161 avl_tree_t *tree = &rl->rl_tree; in zfs_rangelock_enter_writer()
174 if (rl->rl_cb != NULL) { in zfs_rangelock_enter_writer()
175 rl->rl_cb(new, rl->rl_arg); in zfs_rangelock_enter_writer()
218 cv_wait(&lr->lr_write_cv, &rl->rl_lock); in zfs_rangelock_enter_writer()
403 zfs_rangelock_enter_reader(zfs_rangelock_t *rl, zfs_locked_range_t *new, in zfs_rangelock_enter_reader() argument
406 avl_tree_t *tree = &rl->rl_tree; in zfs_rangelock_enter_reader()
432 cv_wait(&prev->lr_read_cv, &rl->rl_lock); in zfs_rangelock_enter_reader()
458 cv_wait(&next->lr_read_cv, &rl->rl_lock); in zfs_rangelock_enter_reader()
483 zfs_rangelock_enter_impl(zfs_rangelock_t *rl, uint64_t off, uint64_t len, in zfs_rangelock_enter_impl() argument
491 new->lr_rangelock = rl; in zfs_rangelock_enter_impl()
502 mutex_enter(&rl->rl_lock); in zfs_rangelock_enter_impl()
507 if (avl_numnodes(&rl->rl_tree) == 0) { in zfs_rangelock_enter_impl()
508 avl_add(&rl->rl_tree, new); in zfs_rangelock_enter_impl()
509 } else if (!zfs_rangelock_enter_reader(rl, new, nonblock)) { in zfs_rangelock_enter_impl()
513 } else if (!zfs_rangelock_enter_writer(rl, new, nonblock)) { in zfs_rangelock_enter_impl()
517 mutex_exit(&rl->rl_lock); in zfs_rangelock_enter_impl()
522 zfs_rangelock_enter(zfs_rangelock_t *rl, uint64_t off, uint64_t len, in zfs_rangelock_enter() argument
525 return (zfs_rangelock_enter_impl(rl, off, len, type, B_FALSE)); in zfs_rangelock_enter()
529 zfs_rangelock_tryenter(zfs_rangelock_t *rl, uint64_t off, uint64_t len, in zfs_rangelock_tryenter() argument
532 return (zfs_rangelock_enter_impl(rl, off, len, type, B_TRUE)); in zfs_rangelock_tryenter()
554 zfs_rangelock_exit_reader(zfs_rangelock_t *rl, zfs_locked_range_t *remove, in zfs_rangelock_exit_reader() argument
557 avl_tree_t *tree = &rl->rl_tree; in zfs_rangelock_exit_reader()
618 zfs_rangelock_t *rl = lr->lr_rangelock; in zfs_rangelock_exit() local
633 mutex_enter(&rl->rl_lock); in zfs_rangelock_exit()
636 avl_remove(&rl->rl_tree, lr); in zfs_rangelock_exit()
647 zfs_rangelock_exit_reader(rl, lr, &free_list); in zfs_rangelock_exit()
649 mutex_exit(&rl->rl_lock); in zfs_rangelock_exit()
665 zfs_rangelock_t *rl = lr->lr_rangelock; in zfs_rangelock_reduce() local
668 ASSERT3U(avl_numnodes(&rl->rl_tree), ==, 1); in zfs_rangelock_reduce()
675 mutex_enter(&rl->rl_lock); in zfs_rangelock_reduce()
678 mutex_exit(&rl->rl_lock); in zfs_rangelock_reduce()