Hello, This series aims at removing all the redundant btrfs_fs_info args being passed to functions in extent-tree.c. Each patch removes the arg from a one function hence it should be fairly easy to review each one of those patches. I'm mainly exploiting the fact that most of the time we have a function which takes a transaction handle, which is always valid (ie can't be null) and at the same time we are passing an fs_info. The former actually contains a reference to the fs info so can be referenced directly from the transaction. Additionally, 2 patches also exploit the fact that block group cache structs also hold a reference to fs_info so there is no point in passing it there as well.
To spice things up a bit, here is the output of stackdelta before/after the patch set is applied: ./fs/btrfs/extent-tree.c __btrfs_inc_extent_ref 152 144 -8 ./fs/btrfs/extent-tree.c __btrfs_run_delayed_refs 256 248 -8 ./fs/btrfs/extent-tree.c alloc_reserved_file_extent 128 136 +8 ./fs/btrfs/extent-tree.c btrfs_alloc_logged_file_extent 104 88 -16 ./fs/btrfs/extent-tree.c btrfs_alloc_reserved_file_extent 56 48 -8 ./fs/btrfs/extent-tree.c btrfs_alloc_tree_block 176 168 -8 ./fs/btrfs/extent-tree.c btrfs_force_chunk_alloc 24 16 -8 ./fs/btrfs/extent-tree.c btrfs_free_extent 104 96 -8 ./fs/btrfs/extent-tree.c btrfs_free_tree_block 112 104 -8 ./fs/btrfs/extent-tree.c btrfs_inc_block_group_ro 56 48 -8 ./fs/btrfs/extent-tree.c btrfs_inc_extent_ref 112 104 -8 ./fs/btrfs/extent-tree.c caching_thread 216 208 -8 ./fs/btrfs/extent-tree.c convert_extent_item_v0 120 112 -8 ./fs/btrfs/extent-tree.c insert_inline_extent_backref 120 112 -8 ./fs/btrfs/extent-tree.c lookup_inline_extent_backref 176 184 +8 ./fs/btrfs/extent-tree.c remove_extent_data_ref 104 96 -8 Also the output of bloat-o-meter : add/remove: 5/5 grow/shrink: 6/24 up/down: 2275/-2554 (-279) Function old new delta insert_extent_data_ref - 738 +738 lookup_extent_data_ref - 613 +613 remove_extent_data_ref - 535 +535 lookup_tree_block_ref - 227 +227 insert_tree_block_ref - 139 +139 btrfs_inc_extent_ref 235 242 +7 btrfs_make_block_group 831 837 +6 update_inline_extent_backref 681 685 +4 exclude_super_stripes 356 360 +4 free_excluded_extents 95 96 +1 alloc_reserved_file_extent 954 955 +1 check_system_chunk 362 361 -1 insert_inline_extent_backref 224 221 -3 flush_space 1691 1688 -3 cache_block_group 1132 1129 -3 btrfs_free_block_groups 1140 1137 -3 btrfs_alloc_tree_block 1024 1021 -3 remove_extent_backref 104 100 -4 find_free_extent 5436 5431 -5 convert_extent_item_v0 735 730 -5 do_chunk_alloc 846 838 -8 btrfs_remove_block_group 2805 2797 -8 btrfs_free_extent 306 298 -8 btrfs_alloc_data_chunk_ondemand 1242 1234 -8 btrfs_free_tree_block 862 853 -9 btrfs_force_chunk_alloc 45 35 -10 btrfs_read_block_groups 2245 2233 -12 btrfs_alloc_logged_file_extent 249 237 -12 btrfs_alloc_reserved_file_extent 70 57 -13 btrfs_inc_block_group_ro 352 338 -14 lookup_inline_extent_backref 1532 1516 -16 caching_thread 1465 1446 -19 __btrfs_run_delayed_refs 5469 5446 -23 __btrfs_inc_extent_ref.isra 608 566 -42 __btrfs_free_extent.isra 3136 3082 -54 insert_tree_block_ref.isra 131 - -131 lookup_tree_block_ref.isra 216 - -216 remove_extent_data_ref.isra 543 - -543 lookup_extent_data_ref.isra 649 - -649 insert_extent_data_ref.isra 729 - -729 Total: Before=91208, After=90929, chg -0.31% Overall this series is a win both in code density as well as stack usage and brings us closer to completely eliminating the chaotic spread ot fs_info in the code base. Nikolay Borisov (34): btrfs: Remove fs_info from insert_tree_block_ref btrfs: Remove fs_info from insert_extent_data_ref btrfs: Remove fs_info argument from insert_extent_backref btrfs: Remove fs_info from remove_extent_data_ref btrfs: Remove fs_info from fixup_low_keys btrfs: Remove fs_info from lookup_inline_extent_backref btrfs: Remove fs_info argument from update_inline_extent_backref btrfs: Remove fs_info argument from lookup_tree_block_ref btrfs: Remove fs_info argument from lookup_extent_data_ref btrfs: Remove fs_info from lookup_extent_backref btrfs: Remove fs_info from btrfs_add_delayed_tree_ref btrfs: Remove fs_info from btrfs_add_delayed_data_ref btrfs: Remove fs_info from btrfs_make_block_group btrfs: Remove fs_info from btrfs_remove_block_group btrfs: Remove fs_info from __btrfs_free_extent btrfs: Remove fs_info from alloc_reserved_file_extent btrfs: Remove fs_info argument from __btrfs_inc_extent_ref btrfs: Remove fs_info from run_delayed_data_ref btrfs: Remove fs_info from run_delayed_extent_op btrfs: Remove unused fs_info from cleanup_extent_op btrfs: Remove fs_info from cleanup_ref_head btrfs: Remove fs_info from run_delayed_tree_ref btrfs: Remove fs_info from do_chunk_alloc btrfs: Remove fs_info from btrfs_alloc_chunk btrfs: Remove fs_info from check_system_chunk btrfs: Remove fs_info from free_excluded_extents btrfs: Remove fs_info from exclude_super_stripes btrfs: Remove fs_info from insert_inline_extent_backref btrfs: Remove fs_info from run_one_delayed_ref btrfs: Remove fs_info from remove_extent_backref btrfs: Remove fs_info from btrfs_alloc_logged_file_extent btrfs: Remove fs_info from btrfs_inc_block_group_ro btrfs: Remove fs_info from btrfs_force_chunk_alloc btrfs: Remove fs_info from convert_extent_item_v0 fs/btrfs/ctree.c | 18 ++-- fs/btrfs/ctree.h | 17 ++- fs/btrfs/delayed-ref.c | 8 +- fs/btrfs/delayed-ref.h | 6 +- fs/btrfs/extent-tree.c | 287 ++++++++++++++++++++++--------------------------- fs/btrfs/relocation.c | 5 +- fs/btrfs/scrub.c | 2 +- fs/btrfs/tree-log.c | 1 - fs/btrfs/volumes.c | 17 ++- fs/btrfs/volumes.h | 3 +- 10 files changed, 161 insertions(+), 203 deletions(-) -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html