Lines Matching +full:1 +full:eb
19 * eb, the lockdep key is determined by the btrfs_root it belongs to and
20 * the level the eb occupies in the tree.
50 DEFINE_LEVEL(stem, 1) \
83 void btrfs_set_buffer_lockdep_class(u64 objectid, struct extent_buffer *eb, int level) in btrfs_set_buffer_lockdep_class() argument
94 lockdep_set_class_and_name(&eb->lock, &ks->keys[level], ks->names[level]); in btrfs_set_buffer_lockdep_class()
97 void btrfs_maybe_reset_lockdep_class(struct btrfs_root *root, struct extent_buffer *eb) in btrfs_maybe_reset_lockdep_class() argument
101 eb, btrfs_header_level(eb)); in btrfs_maybe_reset_lockdep_class()
107 static void btrfs_set_eb_lock_owner(struct extent_buffer *eb, pid_t owner) in btrfs_set_eb_lock_owner() argument
109 eb->lock_owner = owner; in btrfs_set_eb_lock_owner()
112 static void btrfs_set_eb_lock_owner(struct extent_buffer *eb, pid_t owner) { } in btrfs_set_eb_lock_owner() argument
133 * @eb: the eb to be locked
139 void btrfs_tree_read_lock_nested(struct extent_buffer *eb, enum btrfs_lock_nesting nest) in btrfs_tree_read_lock_nested() argument
146 down_read_nested(&eb->lock, nest); in btrfs_tree_read_lock_nested()
147 trace_btrfs_tree_read_lock(eb, start_ns); in btrfs_tree_read_lock_nested()
153 * Return 1 if the rwlock has been taken, 0 otherwise
155 int btrfs_try_tree_read_lock(struct extent_buffer *eb) in btrfs_try_tree_read_lock() argument
157 if (down_read_trylock(&eb->lock)) { in btrfs_try_tree_read_lock()
158 trace_btrfs_try_tree_read_lock(eb); in btrfs_try_tree_read_lock()
159 return 1; in btrfs_try_tree_read_lock()
167 void btrfs_tree_read_unlock(struct extent_buffer *eb) in btrfs_tree_read_unlock() argument
169 trace_btrfs_tree_read_unlock(eb); in btrfs_tree_read_unlock()
170 up_read(&eb->lock); in btrfs_tree_read_unlock()
174 * Lock eb for write.
176 * @eb: the eb to lock
179 * Returns with the eb->lock write locked.
181 void btrfs_tree_lock_nested(struct extent_buffer *eb, enum btrfs_lock_nesting nest) in btrfs_tree_lock_nested() argument
182 __acquires(&eb->lock) in btrfs_tree_lock_nested()
189 down_write_nested(&eb->lock, nest); in btrfs_tree_lock_nested()
190 btrfs_set_eb_lock_owner(eb, current->pid); in btrfs_tree_lock_nested()
191 trace_btrfs_tree_lock(eb, start_ns); in btrfs_tree_lock_nested()
197 void btrfs_tree_unlock(struct extent_buffer *eb) in btrfs_tree_unlock() argument
199 trace_btrfs_tree_unlock(eb); in btrfs_tree_unlock()
200 btrfs_set_eb_lock_owner(eb, 0); in btrfs_tree_unlock()
201 up_write(&eb->lock); in btrfs_tree_unlock()
238 struct extent_buffer *eb; in btrfs_lock_root_node() local
240 while (1) { in btrfs_lock_root_node()
241 eb = btrfs_root_node(root); in btrfs_lock_root_node()
243 btrfs_maybe_reset_lockdep_class(root, eb); in btrfs_lock_root_node()
244 btrfs_tree_lock(eb); in btrfs_lock_root_node()
245 if (eb == root->node) in btrfs_lock_root_node()
247 btrfs_tree_unlock(eb); in btrfs_lock_root_node()
248 free_extent_buffer(eb); in btrfs_lock_root_node()
250 return eb; in btrfs_lock_root_node()
261 struct extent_buffer *eb; in btrfs_read_lock_root_node() local
263 while (1) { in btrfs_read_lock_root_node()
264 eb = btrfs_root_node(root); in btrfs_read_lock_root_node()
266 btrfs_maybe_reset_lockdep_class(root, eb); in btrfs_read_lock_root_node()
267 btrfs_tree_read_lock(eb); in btrfs_read_lock_root_node()
268 if (eb == root->node) in btrfs_read_lock_root_node()
270 btrfs_tree_read_unlock(eb); in btrfs_read_lock_root_node()
271 free_extent_buffer(eb); in btrfs_read_lock_root_node()
273 return eb; in btrfs_read_lock_root_node()
285 struct extent_buffer *eb; in btrfs_try_read_lock_root_node() local
287 while (1) { in btrfs_try_read_lock_root_node()
288 eb = btrfs_root_node(root); in btrfs_try_read_lock_root_node()
289 if (!btrfs_try_tree_read_lock(eb)) { in btrfs_try_read_lock_root_node()
290 free_extent_buffer(eb); in btrfs_try_read_lock_root_node()
293 if (eb == root->node) in btrfs_try_read_lock_root_node()
295 btrfs_tree_read_unlock(eb); in btrfs_try_read_lock_root_node()
296 free_extent_buffer(eb); in btrfs_try_read_lock_root_node()
298 return eb; in btrfs_try_read_lock_root_node()