]> git.baikalelectronics.ru Git - kernel.git/commitdiff
btrfs: use btrfs_next_leaf instead of btrfs_next_item when slots > nritems
authorMarcos Paulo de Souza <mpdesouza@suse.com>
Tue, 13 Jul 2021 13:58:03 +0000 (10:58 -0300)
committerDavid Sterba <dsterba@suse.com>
Mon, 23 Aug 2021 11:19:01 +0000 (13:19 +0200)
After calling btrfs_search_slot is a common practice to check if the
slot found isn't bigger than number of slots in the current leaf, and if
so, search for the same key in the next leaf by calling btrfs_next_leaf,
which calls btrfs_next_old_leaf to do the job.

Calling btrfs_next_item in the same situation would end up in the same
code flow, since

* btrfs_next_item
  * btrfs_next_old_item
    * if slot >= nritems(curr_leaf)
      btrfs_next_old_leaf

Change btrfs_verify_dev_extents and calculate_emulated_zone_size
functions to use btrfs_next_leaf in the same situation.

Signed-off-by: Marcos Paulo de Souza <mpdesouza@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/volumes.c
fs/btrfs/zoned.c

index eb734099ccba8b59ea110d6e362409db64b2e662..01127a4dfe91e61cb37c0439e0ad66f6cdf8aea8 100644 (file)
@@ -8052,7 +8052,7 @@ int btrfs_verify_dev_extents(struct btrfs_fs_info *fs_info)
                goto out;
 
        if (path->slots[0] >= btrfs_header_nritems(path->nodes[0])) {
-               ret = btrfs_next_item(root, path);
+               ret = btrfs_next_leaf(root, path);
                if (ret < 0)
                        goto out;
                /* No dev extents at all? Not good */
index 4f8bfceda09551da94494d10886048d070b9036d..47af1ab3bf120dc979aacaacae1a8d6212d283e7 100644 (file)
@@ -245,7 +245,7 @@ static int calculate_emulated_zone_size(struct btrfs_fs_info *fs_info)
                goto out;
 
        if (path->slots[0] >= btrfs_header_nritems(path->nodes[0])) {
-               ret = btrfs_next_item(root, path);
+               ret = btrfs_next_leaf(root, path);
                if (ret < 0)
                        goto out;
                /* No dev extents at all? Not good */