btrfs: get next entry in tree_search_offset before doing checks
authorNikolay Borisov <nborisov@suse.com>
Mon, 22 Nov 2021 15:16:46 +0000 (17:16 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 3 Jan 2022 14:09:46 +0000 (15:09 +0100)
This is a small optimisation since the currently 'entry' is already
checked in the if () {} else if {} construct above the loop. In essence
the first iteration of the final while loop is redundant. To eliminate
this extra check simply get the next entry at the beginning of the loop.

Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/free-space-cache.c

index 3920beb02131a1e3b730c7f53919ed0a68942c5a..bbe0b36a452abf9ea10eb7654e529c471eb4caf2 100644 (file)
@@ -1730,6 +1730,10 @@ tree_search_offset(struct btrfs_free_space_ctl *ctl,
                return NULL;
 
        while (1) {
+               n = rb_next(&entry->offset_index);
+               if (!n)
+                       return NULL;
+               entry = rb_entry(n, struct btrfs_free_space, offset_index);
                if (entry->bitmap) {
                        if (entry->offset + BITS_PER_BITMAP *
                            ctl->unit > offset)
@@ -1738,11 +1742,6 @@ tree_search_offset(struct btrfs_free_space_ctl *ctl,
                        if (entry->offset + entry->bytes > offset)
                                break;
                }
-
-               n = rb_next(&entry->offset_index);
-               if (!n)
-                       return NULL;
-               entry = rb_entry(n, struct btrfs_free_space, offset_index);
        }
        return entry;
 }