diff mbox series

[08/14] btrfs: use btrfs_read_node_slot in qgroup_trace_extent_swap

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

Commit Message

Josef Bacik Nov. 5, 2020, 3:45 p.m. UTC
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(-)

Comments

Filipe Manana Nov. 6, 2020, 11:53 a.m. UTC | #1
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 mbox series

Patch

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;