Lines Matching refs:level

41 					 unsigned level)  in btree_node_locked_type()  argument
43 return BTREE_NODE_UNLOCKED + ((path->nodes_locked >> (level << 1)) & 3); in btree_node_locked_type()
47 unsigned level) in btree_node_locked_type_nowrite() argument
49 int have = btree_node_locked_type(path, level); in btree_node_locked_type_nowrite()
70 static inline bool btree_node_locked(struct btree_path *path, unsigned level) in btree_node_locked() argument
72 return btree_node_locked_type(path, level) != BTREE_NODE_UNLOCKED; in btree_node_locked()
76 unsigned level, in mark_btree_node_locked_noreset() argument
83 path->nodes_locked &= ~(3U << (level << 1)); in mark_btree_node_locked_noreset()
84 path->nodes_locked |= (type + 1) << (level << 1); in mark_btree_node_locked_noreset()
89 unsigned level, in mark_btree_node_locked() argument
92 mark_btree_node_locked_noreset(path, level, (enum btree_node_locked_type) type); in mark_btree_node_locked()
94 path->l[level].lock_taken_time = local_clock(); in mark_btree_node_locked()
98 static inline enum six_lock_type __btree_lock_want(struct btree_path *path, int level) in __btree_lock_want() argument
100 return level < path->locks_want in __btree_lock_want()
106 btree_lock_want(struct btree_path *path, int level) in btree_lock_want() argument
108 if (level < path->level) in btree_lock_want()
110 if (level < path->locks_want) in btree_lock_want()
112 if (level == path->level) in btree_lock_want()
118 struct btree_path *path, unsigned level) in btree_trans_lock_hold_time_update() argument
122 path->l[level].lock_taken_time, in btree_trans_lock_hold_time_update()
133 struct btree_path *path, unsigned level) in btree_node_unlock() argument
135 int lock_type = btree_node_locked_type(path, level); in btree_node_unlock()
137 EBUG_ON(level >= BTREE_MAX_DEPTH); in btree_node_unlock()
141 bch2_btree_node_unlock_write(trans, path, path->l[level].b); in btree_node_unlock()
144 six_unlock_type(&path->l[level].b->c.lock, lock_type); in btree_node_unlock()
145 btree_trans_lock_hold_time_update(trans, path, level); in btree_node_unlock()
146 mark_btree_node_locked_noreset(path, level, BTREE_NODE_UNLOCKED); in btree_node_unlock()
181 linked->l[b->c.level].lock_seq++; in __bch2_btree_node_unlock_write()
191 EBUG_ON(path->l[b->c.level].b != b); in bch2_btree_node_unlock_write_inlined()
192 EBUG_ON(path->l[b->c.level].lock_seq != six_lock_seq(&b->c.lock)); in bch2_btree_node_unlock_write_inlined()
193 EBUG_ON(btree_node_locked_type(path, b->c.level) != SIX_LOCK_write); in bch2_btree_node_unlock_write_inlined()
195 mark_btree_node_locked_noreset(path, b->c.level, BTREE_NODE_INTENT_LOCKED); in bch2_btree_node_unlock_write_inlined()
271 unsigned level, in btree_node_lock_increment() argument
278 if (&path->l[level].b->c == b && in btree_node_lock_increment()
279 btree_node_locked_type(path, level) >= want) { in btree_node_lock_increment()
290 unsigned level, in btree_node_lock() argument
296 EBUG_ON(level >= BTREE_MAX_DEPTH); in btree_node_lock()
300 btree_node_lock_increment(trans, b, level, (enum btree_node_locked_type) type) || in btree_node_lock()
303 path->l[b->level].lock_taken_time = local_clock(); in btree_node_lock()
318 EBUG_ON(&path->l[b->level].b->c != b); in __btree_node_lock_write()
319 EBUG_ON(path->l[b->level].lock_seq != six_lock_seq(&b->lock)); in __btree_node_lock_write()
320 EBUG_ON(!btree_node_intent_locked(path, b->level)); in __btree_node_lock_write()
327 mark_btree_node_locked_noreset(path, b->level, BTREE_NODE_WRITE_LOCKED); in __btree_node_lock_write()
355 return btree_node_locked(path, path->level) in bch2_btree_path_relock()
363 struct btree_path *path, unsigned level) in bch2_btree_node_relock() argument
365 EBUG_ON(btree_node_locked(path, level) && in bch2_btree_node_relock()
366 !btree_node_write_locked(path, level) && in bch2_btree_node_relock()
367 btree_node_locked_type(path, level) != __btree_lock_want(path, level)); in bch2_btree_node_relock()
369 return likely(btree_node_locked(path, level)) || in bch2_btree_node_relock()
370 (!IS_ERR_OR_NULL(path->l[level].b) && in bch2_btree_node_relock()
371 __bch2_btree_node_relock(trans, path, level, true)); in bch2_btree_node_relock()
375 struct btree_path *path, unsigned level) in bch2_btree_node_relock_notrace() argument
377 EBUG_ON(btree_node_locked(path, level) && in bch2_btree_node_relock_notrace()
378 btree_node_locked_type_nowrite(path, level) != in bch2_btree_node_relock_notrace()
379 __btree_lock_want(path, level)); in bch2_btree_node_relock_notrace()
381 return likely(btree_node_locked(path, level)) || in bch2_btree_node_relock_notrace()
382 (!IS_ERR_OR_NULL(path->l[level].b) && in bch2_btree_node_relock_notrace()
383 __bch2_btree_node_relock(trans, path, level, false)); in bch2_btree_node_relock_notrace()
417 EBUG_ON(!btree_node_locked(path, path->level)); in btree_path_set_should_be_locked()
437 __btree_path_set_level_up(trans, path, path->level++); in btree_path_set_level_up()