]> git.baikalelectronics.ru Git - kernel.git/commitdiff
btrfs: remove BLOCK_GROUP_FLAG_HAS_CACHING_CTL
authorJosef Bacik <josef@toxicpanda.com>
Fri, 15 Jul 2022 19:45:27 +0000 (15:45 -0400)
committerDavid Sterba <dsterba@suse.com>
Mon, 26 Sep 2022 10:27:54 +0000 (12:27 +0200)
This is used mostly to determine if we need to look at the caching ctl
list and clean up any references to this block group.  However we never
clear this flag, specifically because we need to know if we have to
remove a caching ctl we have for this block group still.  This is in the
remove block group path which isn't a fast path, so the optimization
doesn't really matter, simplify this logic and remove the flag.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/block-group.c
fs/btrfs/block-group.h

index 302d4e53877eb8383d2c4229d015cb00248b5564..413addb4a6183e0464f6bc853ef5d760da94e30a 100644 (file)
@@ -772,7 +772,6 @@ int btrfs_cache_block_group(struct btrfs_block_group *cache, bool wait)
        WARN_ON(cache->caching_ctl);
        cache->caching_ctl = caching_ctl;
        cache->cached = BTRFS_CACHE_STARTED;
-       set_bit(BLOCK_GROUP_FLAG_HAS_CACHING_CTL, &cache->runtime_flags);
        spin_unlock(&cache->lock);
 
        write_lock(&fs_info->block_group_cache_lock);
@@ -988,33 +987,31 @@ int btrfs_remove_block_group(struct btrfs_trans_handle *trans,
                kobject_put(kobj);
        }
 
-
-       if (test_bit(BLOCK_GROUP_FLAG_HAS_CACHING_CTL, &block_group->runtime_flags))
-               caching_ctl = btrfs_get_caching_control(block_group);
        if (block_group->cached == BTRFS_CACHE_STARTED)
                btrfs_wait_block_group_cache_done(block_group);
-       if (test_bit(BLOCK_GROUP_FLAG_HAS_CACHING_CTL, &block_group->runtime_flags)) {
-               write_lock(&fs_info->block_group_cache_lock);
-               if (!caching_ctl) {
-                       struct btrfs_caching_control *ctl;
-
-                       list_for_each_entry(ctl,
-                                   &fs_info->caching_block_groups, list)
-                               if (ctl->block_group == block_group) {
-                                       caching_ctl = ctl;
-                                       refcount_inc(&caching_ctl->count);
-                                       break;
-                               }
-               }
-               if (caching_ctl)
-                       list_del_init(&caching_ctl->list);
-               write_unlock(&fs_info->block_group_cache_lock);
-               if (caching_ctl) {
-                       /* Once for the caching bgs list and once for us. */
-                       btrfs_put_caching_control(caching_ctl);
-                       btrfs_put_caching_control(caching_ctl);
+
+       write_lock(&fs_info->block_group_cache_lock);
+       caching_ctl = btrfs_get_caching_control(block_group);
+       if (!caching_ctl) {
+               struct btrfs_caching_control *ctl;
+
+               list_for_each_entry(ctl, &fs_info->caching_block_groups, list) {
+                       if (ctl->block_group == block_group) {
+                               caching_ctl = ctl;
+                               refcount_inc(&caching_ctl->count);
+                               break;
+                       }
                }
        }
+       if (caching_ctl)
+               list_del_init(&caching_ctl->list);
+       write_unlock(&fs_info->block_group_cache_lock);
+
+       if (caching_ctl) {
+               /* Once for the caching bgs list and once for us. */
+               btrfs_put_caching_control(caching_ctl);
+               btrfs_put_caching_control(caching_ctl);
+       }
 
        spin_lock(&trans->transaction->dirty_bgs_lock);
        WARN_ON(!list_empty(&block_group->dirty_list));
index 2a2cae6038c7afbffc2a0457ccc4d9b8f02e6f42..66221da02e4168bf788e3b2b724120be9534adf9 100644 (file)
@@ -49,7 +49,6 @@ enum btrfs_chunk_alloc_enum {
 /* Block group flags set at runtime */
 enum btrfs_block_group_flags {
        BLOCK_GROUP_FLAG_IREF,
-       BLOCK_GROUP_FLAG_HAS_CACHING_CTL,
        BLOCK_GROUP_FLAG_REMOVED,
        BLOCK_GROUP_FLAG_TO_COPY,
        BLOCK_GROUP_FLAG_RELOCATING_REPAIR,