summaryrefslogtreecommitdiff
path: root/fs/btrfs/extent-tree.h
diff options
context:
space:
mode:
authorBoris Burkov <boris@bur.io>2022-12-16 03:06:32 +0300
committerDavid Sterba <dsterba@suse.com>2023-02-13 19:50:34 +0300
commit854c2f365d7e0b5b1250953e03860f09a7847c39 (patch)
treedb34dd34d197a3a37bc141c9883d14acc2329aef /fs/btrfs/extent-tree.h
parentcfc2de0fce015d4249c674ef9f5e0b4817ba5c53 (diff)
downloadlinux-854c2f365d7e0b5b1250953e03860f09a7847c39.tar.xz
btrfs: add more find_free_extent tracepoints
find_free_extent is a complicated function. It consists (at least) of: - a hint that jumps into the middle of a for loop macro - a middle loop trying every raid level - an outer loop ascending through ffe loop levels - complicated logic for skipping some of those ffe loop levels - multiple underlying in-bg allocators (zoned, cluster, no cluster) Which is all to say that more tracing is helpful for debugging its behavior. Add two new tracepoints: at the entrance to the block_groups loop (hit for every raid level and every ffe_ctl loop) and at the point we seriously consider a block_group for allocation. This way we can see the whole path through the algorithm, including hints, multiple loops, etc. Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Boris Burkov <boris@bur.io> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/extent-tree.h')
-rw-r--r--fs/btrfs/extent-tree.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/btrfs/extent-tree.h b/fs/btrfs/extent-tree.h
index 64fa8ad7914a..daa5e3505886 100644
--- a/fs/btrfs/extent-tree.h
+++ b/fs/btrfs/extent-tree.h
@@ -76,6 +76,9 @@ struct find_free_extent_ctl {
/* Allocation policy */
enum btrfs_extent_allocation_policy policy;
+
+ /* Whether or not the allocator is currently following a hint */
+ bool hinted;
};
enum btrfs_inline_ref_type {