Lines Matching 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.
82 void btrfs_set_buffer_lockdep_class(u64 objectid, struct extent_buffer *eb, int level) in btrfs_set_buffer_lockdep_class() argument
93 lockdep_set_class_and_name(&eb->lock, &ks->keys[level], ks->names[level]); in btrfs_set_buffer_lockdep_class()
96 void btrfs_maybe_reset_lockdep_class(struct btrfs_root *root, struct extent_buffer *eb) in btrfs_maybe_reset_lockdep_class() argument
100 eb, btrfs_header_level(eb)); in btrfs_maybe_reset_lockdep_class()
106 static void btrfs_set_eb_lock_owner(struct extent_buffer *eb, pid_t owner) in btrfs_set_eb_lock_owner() argument
108 eb->lock_owner = owner; in btrfs_set_eb_lock_owner()
111 static void btrfs_set_eb_lock_owner(struct extent_buffer *eb, pid_t owner) { } in btrfs_set_eb_lock_owner() argument
132 * @eb: the eb to be locked
138 void btrfs_tree_read_lock_nested(struct extent_buffer *eb, enum btrfs_lock_nesting nest) in btrfs_tree_read_lock_nested() argument
145 down_read_nested(&eb->lock, nest); in btrfs_tree_read_lock_nested()
146 trace_btrfs_tree_read_lock(eb, start_ns); in btrfs_tree_read_lock_nested()
154 bool btrfs_try_tree_read_lock(struct extent_buffer *eb) in btrfs_try_tree_read_lock() argument
156 if (down_read_trylock(&eb->lock)) { in btrfs_try_tree_read_lock()
157 trace_btrfs_try_tree_read_lock(eb); in btrfs_try_tree_read_lock()
166 void btrfs_tree_read_unlock(struct extent_buffer *eb) in btrfs_tree_read_unlock() argument
168 trace_btrfs_tree_read_unlock(eb); in btrfs_tree_read_unlock()
169 up_read(&eb->lock); in btrfs_tree_read_unlock()
173 * Lock eb for write.
175 * @eb: the eb to lock
178 * Returns with the eb->lock write locked.
180 void btrfs_tree_lock_nested(struct extent_buffer *eb, enum btrfs_lock_nesting nest) in btrfs_tree_lock_nested() argument
181 __acquires(&eb->lock) in btrfs_tree_lock_nested()
188 down_write_nested(&eb->lock, nest); in btrfs_tree_lock_nested()
189 btrfs_set_eb_lock_owner(eb, current->pid); in btrfs_tree_lock_nested()
190 trace_btrfs_tree_lock(eb, start_ns); in btrfs_tree_lock_nested()
196 void btrfs_tree_unlock(struct extent_buffer *eb) in btrfs_tree_unlock() argument
198 trace_btrfs_tree_unlock(eb); in btrfs_tree_unlock()
199 btrfs_set_eb_lock_owner(eb, 0); in btrfs_tree_unlock()
200 up_write(&eb->lock); in btrfs_tree_unlock()
237 struct extent_buffer *eb; in btrfs_lock_root_node() local
240 eb = btrfs_root_node(root); in btrfs_lock_root_node()
242 btrfs_maybe_reset_lockdep_class(root, eb); in btrfs_lock_root_node()
243 btrfs_tree_lock(eb); in btrfs_lock_root_node()
244 if (eb == root->node) in btrfs_lock_root_node()
246 btrfs_tree_unlock(eb); in btrfs_lock_root_node()
247 free_extent_buffer(eb); in btrfs_lock_root_node()
249 return eb; in btrfs_lock_root_node()
260 struct extent_buffer *eb; in btrfs_read_lock_root_node() local
263 eb = btrfs_root_node(root); in btrfs_read_lock_root_node()
265 btrfs_maybe_reset_lockdep_class(root, eb); in btrfs_read_lock_root_node()
266 btrfs_tree_read_lock(eb); in btrfs_read_lock_root_node()
267 if (eb == root->node) in btrfs_read_lock_root_node()
269 btrfs_tree_read_unlock(eb); in btrfs_read_lock_root_node()
270 free_extent_buffer(eb); in btrfs_read_lock_root_node()
272 return eb; in btrfs_read_lock_root_node()
284 struct extent_buffer *eb; in btrfs_try_read_lock_root_node() local
287 eb = btrfs_root_node(root); in btrfs_try_read_lock_root_node()
288 if (!btrfs_try_tree_read_lock(eb)) { in btrfs_try_read_lock_root_node()
289 free_extent_buffer(eb); in btrfs_try_read_lock_root_node()
292 if (eb == root->node) in btrfs_try_read_lock_root_node()
294 btrfs_tree_read_unlock(eb); in btrfs_try_read_lock_root_node()
295 free_extent_buffer(eb); in btrfs_try_read_lock_root_node()
297 return eb; in btrfs_try_read_lock_root_node()