btrfs: introduce extent allocation policy
authorNaohiro Aota <naohiro.aota@wdc.com>
Tue, 25 Feb 2020 03:56:16 +0000 (12:56 +0900)
committerDavid Sterba <dsterba@suse.com>
Mon, 23 Mar 2020 16:01:49 +0000 (17:01 +0100)
This commit introduces extent allocation policy for btrfs. This policy
controls how btrfs allocate an extents from block groups.  There is no
functional change introduced with this commit.

Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent-tree.c

index 9d5563a..bd0d136 100644 (file)
@@ -3427,6 +3427,10 @@ btrfs_release_block_group(struct btrfs_block_group *cache,
        btrfs_put_block_group(cache);
 }
 
+enum btrfs_extent_allocation_policy {
+       BTRFS_EXTENT_ALLOC_CLUSTERED,
+};
+
 /*
  * Structure used internally for find_free_extent() function.  Wraps needed
  * parameters.
@@ -3478,6 +3482,9 @@ struct find_free_extent_ctl {
 
        /* Found result */
        u64 found_offset;
+
+       /* Allocation policy */
+       enum btrfs_extent_allocation_policy policy;
 };
 
 
@@ -3815,6 +3822,7 @@ static noinline int find_free_extent(struct btrfs_fs_info *fs_info,
        ffe_ctl.have_caching_bg = false;
        ffe_ctl.orig_have_caching_bg = false;
        ffe_ctl.found_offset = 0;
+       ffe_ctl.policy = BTRFS_EXTENT_ALLOC_CLUSTERED;
 
        ins->type = BTRFS_EXTENT_ITEM_KEY;
        ins->objectid = 0;