Re: [PATCH 00/34] fs_info cleanup of extent-tree.c

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2018年06月20日 20:48, Nikolay Borisov wrote:
> 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. 

Looks pretty good.

Except the last one related to the deprecated extent_ref_v0, as I prefer
to delete the whole EXTENT_REF_V0 code.

Reviewed-by: Qu Wenruo <wqu@xxxxxxxx>

Thanks,
Qu

> 
> 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(-)
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux