Message ID | 96eb2106d6b5518d4c5db34aec50d12860d702e7.1604591048.git.josef@toxicpanda.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Set the lockdep class on eb's at allocation time | expand |
On Thu, Nov 5, 2020 at 3:47 PM Josef Bacik <josef@toxicpanda.com> wrote: > > We're open-coding btrfs_read_node_slot() here, replace with the helper. > > Signed-off-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: Filipe Manana <fdmanana@suse.com> I couldn't get anymore the lockdep splat I reported before (after applying the whole patchset of course), it used to happen very often with btrfs/033. Looks good, thanks. > --- > fs/btrfs/qgroup.c | 13 +------------ > 1 file changed, 1 insertion(+), 12 deletions(-) > > diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c > index 717b1a6e13a6..21e42d8ec78e 100644 > --- a/fs/btrfs/qgroup.c > +++ b/fs/btrfs/qgroup.c > @@ -1892,27 +1892,16 @@ static int qgroup_trace_extent_swap(struct btrfs_trans_handle* trans, > struct btrfs_key dst_key; > > if (src_path->nodes[cur_level] == NULL) { > - struct btrfs_key first_key; > struct extent_buffer *eb; > int parent_slot; > - u64 child_gen; > - u64 child_bytenr; > > eb = src_path->nodes[cur_level + 1]; > parent_slot = src_path->slots[cur_level + 1]; > - child_bytenr = btrfs_node_blockptr(eb, parent_slot); > - child_gen = btrfs_node_ptr_generation(eb, parent_slot); > - btrfs_node_key_to_cpu(eb, &first_key, parent_slot); > > - eb = read_tree_block(fs_info, child_bytenr, child_gen, > - cur_level, &first_key); > + eb = btrfs_read_node_slot(eb, parent_slot); > if (IS_ERR(eb)) { > ret = PTR_ERR(eb); > goto out; > - } else if (!extent_buffer_uptodate(eb)) { > - free_extent_buffer(eb); > - ret = -EIO; > - goto out; > } > > src_path->nodes[cur_level] = eb; > -- > 2.26.2 >
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c index 717b1a6e13a6..21e42d8ec78e 100644 --- a/fs/btrfs/qgroup.c +++ b/fs/btrfs/qgroup.c @@ -1892,27 +1892,16 @@ static int qgroup_trace_extent_swap(struct btrfs_trans_handle* trans, struct btrfs_key dst_key; if (src_path->nodes[cur_level] == NULL) { - struct btrfs_key first_key; struct extent_buffer *eb; int parent_slot; - u64 child_gen; - u64 child_bytenr; eb = src_path->nodes[cur_level + 1]; parent_slot = src_path->slots[cur_level + 1]; - child_bytenr = btrfs_node_blockptr(eb, parent_slot); - child_gen = btrfs_node_ptr_generation(eb, parent_slot); - btrfs_node_key_to_cpu(eb, &first_key, parent_slot); - eb = read_tree_block(fs_info, child_bytenr, child_gen, - cur_level, &first_key); + eb = btrfs_read_node_slot(eb, parent_slot); if (IS_ERR(eb)) { ret = PTR_ERR(eb); goto out; - } else if (!extent_buffer_uptodate(eb)) { - free_extent_buffer(eb); - ret = -EIO; - goto out; } src_path->nodes[cur_level] = eb;
We're open-coding btrfs_read_node_slot() here, replace with the helper. Signed-off-by: Josef Bacik <josef@toxicpanda.com> --- fs/btrfs/qgroup.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-)