Lines Matching refs:level
23 unsigned level) in bch2_btree_node_lock_counts() argument
35 if (path != skip && &path->l[level].b->c == b) { in bch2_btree_node_lock_counts()
36 int t = btree_node_locked_type(path, level); in bch2_btree_node_lock_counts()
65 u8 level; member
337 top->level = 0; in bch2_check_for_deadlock()
342 top->level < BTREE_MAX_DEPTH; in bch2_check_for_deadlock()
343 top->level++, top->lock_start_time = 0) { in bch2_check_for_deadlock()
344 int lock_held = btree_node_locked_type(path, top->level); in bch2_check_for_deadlock()
349 b = &READ_ONCE(path->l[top->level].b)->c; in bch2_check_for_deadlock()
426 int readers = bch2_btree_node_lock_counts(trans, NULL, b, b->level).n[SIX_LOCK_read]; in __bch2_btree_node_lock_write()
441 mark_btree_node_locked_noreset(path, b->level, BTREE_NODE_INTENT_LOCKED); in __bch2_btree_node_lock_write()
462 unsigned l = path->level; in btree_path_get_locks()
516 struct btree_path *path, unsigned level, in __bch2_btree_node_relock() argument
519 struct btree *b = btree_path_node(path, level); in __bch2_btree_node_relock()
520 int want = __btree_lock_want(path, level); in __bch2_btree_node_relock()
525 if (six_relock_type(&b->c.lock, want, path->l[level].lock_seq) || in __bch2_btree_node_relock()
526 (btree_node_lock_seq_matches(path, b, level) && in __bch2_btree_node_relock()
527 btree_node_lock_increment(trans, &b->c, level, want))) { in __bch2_btree_node_relock()
528 mark_btree_node_locked(trans, path, level, want); in __bch2_btree_node_relock()
533 trace_and_count(trans->c, btree_path_relock_fail, trans, _RET_IP_, path, level); in __bch2_btree_node_relock()
540 struct btree_path *path, unsigned level) in bch2_btree_node_upgrade() argument
542 struct btree *b = path->l[level].b; in bch2_btree_node_upgrade()
544 if (!is_btree_node(path, level)) in bch2_btree_node_upgrade()
547 switch (btree_lock_want(path, level)) { in bch2_btree_node_upgrade()
549 BUG_ON(btree_node_locked(path, level)); in bch2_btree_node_upgrade()
552 BUG_ON(btree_node_intent_locked(path, level)); in bch2_btree_node_upgrade()
553 return bch2_btree_node_relock(trans, path, level); in bch2_btree_node_upgrade()
560 if (btree_node_intent_locked(path, level)) in bch2_btree_node_upgrade()
566 if (btree_node_locked(path, level) in bch2_btree_node_upgrade()
568 : six_relock_type(&b->c.lock, SIX_LOCK_intent, path->l[level].lock_seq)) in bch2_btree_node_upgrade()
571 if (btree_node_lock_seq_matches(path, b, level) && in bch2_btree_node_upgrade()
572 btree_node_lock_increment(trans, &b->c, level, BTREE_NODE_INTENT_LOCKED)) { in bch2_btree_node_upgrade()
573 btree_node_unlock(trans, path, level); in bch2_btree_node_upgrade()
577 trace_and_count(trans->c, btree_path_upgrade_fail, trans, _RET_IP_, path, level); in bch2_btree_node_upgrade()
580 mark_btree_node_locked_noreset(path, level, BTREE_NODE_INTENT_LOCKED); in bch2_btree_node_upgrade()
594 for (l = path->level; in bch2_btree_path_relock_intent()
733 if (l > path->level) { in __bch2_btree_path_downgrade()
887 if (!path->nodes_locked && btree_path_node(path, path->level)) { in __bch2_btree_path_verify_locks()