mbox series

[0/5] Reduce size of extent_io_tree, remove fs_info

Message ID cover.1700572232.git.dsterba@suse.com (mailing list archive)
Headers show
Series Reduce size of extent_io_tree, remove fs_info | expand

Message

David Sterba Nov. 21, 2023, 1:20 p.m. UTC
We have the fs_info pointer in extent_io_tree for the trace points as
the inode is not always set. This is a bit wasteful and extent_io_tree
is also embedded in other structures. The tree owner can be used to
determine if the inode is expected to be non-NULL, otherwise we can
store the fs_info pointer.

I tried to do it in the cleanest way, union and access wrappers, it's
IMO worth the space savings:

- btrfs_inode		1104 -> 1088
- btrfs_device		 520 ->  512
- btrfs_root		1360 -> 1344
- btrfs_transaction	 456 ->  440
- btrfs_fs_info		3600 -> 3592
- reloc_control		1520 -> 1512

The btrfs_inode structure is getting closer to the 1024 size where it
would pack better in the slab pages.

David Sterba (5):
  btrfs: move lockdep class setting out of extent_io_tree_init
  btrfs: drop error message in extent_io_tree insert_state()
  btrfs: constify fs_info parameter in __btrfs_panic()
  btrfs: enhance extent_io_tree error reports
  btrfs: always set extent_io_tree::inode and drop fs_info

 fs/btrfs/extent-io-tree.c    | 113 ++++++++++++++++++++++-------------
 fs/btrfs/extent-io-tree.h    |  18 +++++-
 fs/btrfs/inode.c             |  14 +++++
 fs/btrfs/messages.c          |   2 +-
 fs/btrfs/messages.h          |   2 +-
 fs/btrfs/tests/btrfs-tests.c |   2 +-
 include/trace/events/btrfs.h |  45 +++++---------
 7 files changed, 118 insertions(+), 78 deletions(-)

Comments

Josef Bacik Nov. 21, 2023, 2:19 p.m. UTC | #1
On Tue, Nov 21, 2023 at 02:20:12PM +0100, David Sterba wrote:
> We have the fs_info pointer in extent_io_tree for the trace points as
> the inode is not always set. This is a bit wasteful and extent_io_tree
> is also embedded in other structures. The tree owner can be used to
> determine if the inode is expected to be non-NULL, otherwise we can
> store the fs_info pointer.
> 
> I tried to do it in the cleanest way, union and access wrappers, it's
> IMO worth the space savings:
> 
> - btrfs_inode		1104 -> 1088
> - btrfs_device		 520 ->  512
> - btrfs_root		1360 -> 1344
> - btrfs_transaction	 456 ->  440
> - btrfs_fs_info		3600 -> 3592
> - reloc_control		1520 -> 1512
> 
> The btrfs_inode structure is getting closer to the 1024 size where it
> would pack better in the slab pages.
>

Reviewed-by: Josef Bacik <josef@toxicpanda.com>

Thanks,

Josef