Lines Matching +full:1 +full:eb
18 * eb, the lockdep key is determined by the btrfs_root it belongs to and
19 * the level the eb occupies in the tree.
49 DEFINE_LEVEL(stem, 1) \
80 void btrfs_set_buffer_lockdep_class(u64 objectid, struct extent_buffer *eb, int level) in btrfs_set_buffer_lockdep_class() argument
91 lockdep_set_class_and_name(&eb->lock, &ks->keys[level], ks->names[level]); in btrfs_set_buffer_lockdep_class()
94 void btrfs_maybe_reset_lockdep_class(struct btrfs_root *root, struct extent_buffer *eb) in btrfs_maybe_reset_lockdep_class() argument
98 eb, btrfs_header_level(eb)); in btrfs_maybe_reset_lockdep_class()
121 * @eb: the eb to be locked
127 void __btrfs_tree_read_lock(struct extent_buffer *eb, enum btrfs_lock_nesting nest) in __btrfs_tree_read_lock() argument
134 down_read_nested(&eb->lock, nest); in __btrfs_tree_read_lock()
135 trace_btrfs_tree_read_lock(eb, start_ns); in __btrfs_tree_read_lock()
138 void btrfs_tree_read_lock(struct extent_buffer *eb) in btrfs_tree_read_lock() argument
140 __btrfs_tree_read_lock(eb, BTRFS_NESTING_NORMAL); in btrfs_tree_read_lock()
146 * Return 1 if the rwlock has been taken, 0 otherwise
148 int btrfs_try_tree_read_lock(struct extent_buffer *eb) in btrfs_try_tree_read_lock() argument
150 if (down_read_trylock(&eb->lock)) { in btrfs_try_tree_read_lock()
151 trace_btrfs_try_tree_read_lock(eb); in btrfs_try_tree_read_lock()
152 return 1; in btrfs_try_tree_read_lock()
160 * Return 1 if the rwlock has been taken, 0 otherwise
162 int btrfs_try_tree_write_lock(struct extent_buffer *eb) in btrfs_try_tree_write_lock() argument
164 if (down_write_trylock(&eb->lock)) { in btrfs_try_tree_write_lock()
165 eb->lock_owner = current->pid; in btrfs_try_tree_write_lock()
166 trace_btrfs_try_tree_write_lock(eb); in btrfs_try_tree_write_lock()
167 return 1; in btrfs_try_tree_write_lock()
175 void btrfs_tree_read_unlock(struct extent_buffer *eb) in btrfs_tree_read_unlock() argument
177 trace_btrfs_tree_read_unlock(eb); in btrfs_tree_read_unlock()
178 up_read(&eb->lock); in btrfs_tree_read_unlock()
182 * __btrfs_tree_lock - lock eb for write
183 * @eb: the eb to lock
186 * Returns with the eb->lock write locked.
188 void __btrfs_tree_lock(struct extent_buffer *eb, enum btrfs_lock_nesting nest) in __btrfs_tree_lock() argument
189 __acquires(&eb->lock) in __btrfs_tree_lock()
196 down_write_nested(&eb->lock, nest); in __btrfs_tree_lock()
197 eb->lock_owner = current->pid; in __btrfs_tree_lock()
198 trace_btrfs_tree_lock(eb, start_ns); in __btrfs_tree_lock()
201 void btrfs_tree_lock(struct extent_buffer *eb) in btrfs_tree_lock() argument
203 __btrfs_tree_lock(eb, BTRFS_NESTING_NORMAL); in btrfs_tree_lock()
209 void btrfs_tree_unlock(struct extent_buffer *eb) in btrfs_tree_unlock() argument
211 trace_btrfs_tree_unlock(eb); in btrfs_tree_unlock()
212 eb->lock_owner = 0; in btrfs_tree_unlock()
213 up_write(&eb->lock); in btrfs_tree_unlock()
250 struct extent_buffer *eb; in btrfs_lock_root_node() local
252 while (1) { in btrfs_lock_root_node()
253 eb = btrfs_root_node(root); in btrfs_lock_root_node()
255 btrfs_maybe_reset_lockdep_class(root, eb); in btrfs_lock_root_node()
256 btrfs_tree_lock(eb); in btrfs_lock_root_node()
257 if (eb == root->node) in btrfs_lock_root_node()
259 btrfs_tree_unlock(eb); in btrfs_lock_root_node()
260 free_extent_buffer(eb); in btrfs_lock_root_node()
262 return eb; in btrfs_lock_root_node()
273 struct extent_buffer *eb; in btrfs_read_lock_root_node() local
275 while (1) { in btrfs_read_lock_root_node()
276 eb = btrfs_root_node(root); in btrfs_read_lock_root_node()
278 btrfs_maybe_reset_lockdep_class(root, eb); in btrfs_read_lock_root_node()
279 btrfs_tree_read_lock(eb); in btrfs_read_lock_root_node()
280 if (eb == root->node) in btrfs_read_lock_root_node()
282 btrfs_tree_read_unlock(eb); in btrfs_read_lock_root_node()
283 free_extent_buffer(eb); in btrfs_read_lock_root_node()
285 return eb; in btrfs_read_lock_root_node()
297 struct extent_buffer *eb; in btrfs_try_read_lock_root_node() local
299 while (1) { in btrfs_try_read_lock_root_node()
300 eb = btrfs_root_node(root); in btrfs_try_read_lock_root_node()
301 if (!btrfs_try_tree_read_lock(eb)) { in btrfs_try_read_lock_root_node()
302 free_extent_buffer(eb); in btrfs_try_read_lock_root_node()
305 if (eb == root->node) in btrfs_try_read_lock_root_node()
307 btrfs_tree_read_unlock(eb); in btrfs_try_read_lock_root_node()
308 free_extent_buffer(eb); in btrfs_try_read_lock_root_node()
310 return eb; in btrfs_try_read_lock_root_node()