On 6/24/16 6:14 PM, je...@suse.com wrote:
> From: Jeff Mahoney <je...@suse.com>
> 
> One of the common complaints I've heard from new and experienced
> developers alike about the btrfs code is the ubiquity of
> struct btrfs_root.  There is one for every tree on disk and it's not
> always obvious which root is needed in a particular call path.  It can
> be frustrating to spend time figuring out which root is required only
> to discover that it's not actually used for anything other than
> getting the fs-global struct btrfs_fs_info.
> 
> The patchset contains several sections.
> 
> 1) The fsid trace event patchset I posted earlier; I can rebase without this
>    but I'd prefer not to.
> 
> 2) Converting btrfs_test_opt and friends to use an fs_info.
> 
> 3) Converting tests to use an fs_info pointer whenever a root is used.
> 
> 4) Moving sectorsize and nodesize to fs_info and cleaning up the
>    macros used to access them.
> 
> 5) General cleanups and small fixes to make the later patches easier to
>    review.
> 
> 6) Adding an "fs_info" convenience variable to every functiont that
>    references root->fs_info more than once.  As new references appear
>    in functions, more of these are added later.
> 
> 7) Call functions that always overwrite their root parameter with
>    an fs_info instead.
> 
> 8) Call functions that are always called using the same root with
>    an fs_info instead, retreiving the root internally.
> 
> 9) Convert every function that accepts a root argument but only uses it
>    to retreive an fs_info to accept an fs_info instead.  This is a
>    recursive process as the changes percolate up.
> 
> 10) Separately convert btrfs_commit_transaction and btrfs_end_transaction
>     to use trans->root instead of a root parameter.  Both are always called
>     with the same root that was passed to btrfs_{start,join}_transaction.
> 
> This series of patches in email format is the "squashed" version of
> the full development series.  That series is available at:
> 
> git://git.kernel.org/pub/scm/linux/kernel/git/jeffm/linux-btrfs.git
> 
> There are two branches of interest:
> - btrfs-testing/root-fsinfo-cleanup-squashed contains this series
> - btrfs-testing/root-fsinfo-cleanup contains the full series

Hrm.  It looks like vger didn't allow a few of the patches through,
presumably due to size.  Using the git repo is probably the only way to
go, then.

-Jeff

> The btrfs-testing/root-fsinfo-cleanup branch is easier to review if using
> git as each change is discrete.  As a whole, the patchset is invasive but
> should change execution minimally.  It passes and fails the same xfstests
> that the unpatched kernel does across multiple runs.
> 
> Thanks,
> 
> -Jeff
> 
> ---
> 
> Jeff Mahoney (31):
>   btrfs: plumb fs_info into btrfs_work
>   btrfs: prefix fsid to all trace events
>   btrfs: btrfs_test_opt and friends should take a btrfs_fs_info
>   btrfs: tests, move initialization into tests/
>   btrfs: tests, require fs_info for root
>   btrfs: tests, use BTRFS_FS_STATE_DUMMY_FS_INFO instead of dummy root
>   btrfs: simpilify btrfs_subvol_inherit_props
>   btrfs: copy_to_sk drop unused root parameter
>   btrfs: cleanup, remove prototype for btrfs_find_root_ref
>   btrfs: introduce BTRFS_MAX_ITEM_SIZE
>   btrfs: convert nodesize macros to static inlines
>   btrfs: btrfs_relocate_chunk pass extent_root to btrfs_end_transaction
>   btrfs: add btrfs_trans_handle->fs_info pointer
>   btrfs: btrfs_abort_transaction, drop root parameter
>   btrfs: call functions that overwrite their root parameter with fs_info
>   btrfs: call functions that always use the same root with fs_info
>     instead
>   btrfs: btrfs_init_new_device should use fs_info->dev_root
>   btrfs: alloc_reserved_file_extent trace point should use extent_root
>   btrfs: struct btrfsic_state->root should be an fs_info
>   btrfs: struct reada_control.root -> reada_control.fs_info
>   btrfs: root->fs_info cleanup, use fs_info->dev_root everywhere
>   btrfs: root->fs_info cleanup, io_ctl_init
>   btrfs: pull node/sector/stripe sizes out of root and into fs_info
>   btrfs: root->fs_info cleanup, btrfs_calc_{trans,trunc}_metadata_size
>   btrfs: root->fs_info cleanup, lock/unlock_chunks
>   btrfs: root->fs_info cleanup, update_block_group{,flags}
>   btrfs: root->fs_info cleanup, add fs_info convenience variables
>   btrfs: root->fs_info cleanup, access fs_info->delayed_root directly
>   btrfs: take an fs_info parameter directly when the root is not used
>     otherwise
>   btrfs: root->fs_info cleanup, btrfs_commit_transaction already has
>     root
>   btrfs: root->fs_info cleanup, btrfs_end_transaction{,_throttle} use
>     trans->fs_info instead of parameter
> 
>  fs/btrfs/async-thread.c                |   31 +-
>  fs/btrfs/async-thread.h                |    6 +-
>  fs/btrfs/backref.c                     |   12 +-
>  fs/btrfs/check-integrity.c             |   41 +-
>  fs/btrfs/check-integrity.h             |    5 +-
>  fs/btrfs/compression.c                 |   54 +-
>  fs/btrfs/ctree.c                       |  483 ++++++------
>  fs/btrfs/ctree.h                       |  281 +++----
>  fs/btrfs/delayed-inode.c               |  147 ++--
>  fs/btrfs/delayed-inode.h               |   19 +-
>  fs/btrfs/delayed-ref.c                 |    9 +-
>  fs/btrfs/dev-replace.c                 |   68 +-
>  fs/btrfs/dev-replace.h                 |    4 +-
>  fs/btrfs/dir-item.c                    |   44 +-
>  fs/btrfs/disk-io.c                     |  593 ++++++++-------
>  fs/btrfs/disk-io.h                     |   27 +-
>  fs/btrfs/export.c                      |   10 +-
>  fs/btrfs/extent-tree.c                 | 1297 
> ++++++++++++++++----------------
>  fs/btrfs/extent_io.c                   |   41 +-
>  fs/btrfs/extent_io.h                   |    4 +-
>  fs/btrfs/file-item.c                   |  164 ++--
>  fs/btrfs/file.c                        |  220 +++---
>  fs/btrfs/free-space-cache.c            |  116 +--
>  fs/btrfs/free-space-cache.h            |    6 +-
>  fs/btrfs/free-space-tree.c             |   60 +-
>  fs/btrfs/inode-item.c                  |   11 +-
>  fs/btrfs/inode-map.c                   |   48 +-
>  fs/btrfs/inode.c                       |  834 ++++++++++----------
>  fs/btrfs/ioctl.c                       |  613 ++++++++-------
>  fs/btrfs/ordered-data.c                |   38 +-
>  fs/btrfs/ordered-data.h                |    4 +-
>  fs/btrfs/print-tree.c                  |   21 +-
>  fs/btrfs/print-tree.h                  |    4 +-
>  fs/btrfs/props.c                       |   11 +-
>  fs/btrfs/qgroup.c                      |   60 +-
>  fs/btrfs/qgroup.h                      |    9 +-
>  fs/btrfs/raid56.c                      |   60 +-
>  fs/btrfs/raid56.h                      |    8 +-
>  fs/btrfs/reada.c                       |   36 +-
>  fs/btrfs/relocation.c                  |  261 ++++---
>  fs/btrfs/root-tree.c                   |   36 +-
>  fs/btrfs/scrub.c                       |  177 +++--
>  fs/btrfs/send.c                        |   45 +-
>  fs/btrfs/super.c                       |  308 ++++----
>  fs/btrfs/tests/btrfs-tests.c           |   72 +-
>  fs/btrfs/tests/btrfs-tests.h           |   38 +-
>  fs/btrfs/tests/extent-buffer-tests.c   |   23 +-
>  fs/btrfs/tests/free-space-tests.c      |   14 +-
>  fs/btrfs/tests/free-space-tree-tests.c |   18 +-
>  fs/btrfs/tests/inode-tests.c           |   46 +-
>  fs/btrfs/tests/qgroup-tests.c          |   23 +-
>  fs/btrfs/transaction.c                 |  531 ++++++-------
>  fs/btrfs/transaction.h                 |   16 +-
>  fs/btrfs/tree-log.c                    |  193 ++---
>  fs/btrfs/uuid-tree.c                   |   20 +-
>  fs/btrfs/volumes.c                     |  813 ++++++++++----------
>  fs/btrfs/volumes.h                     |   42 +-
>  fs/btrfs/xattr.c                       |   21 +-
>  include/trace/events/btrfs.h           |  296 ++++----
>  59 files changed, 4383 insertions(+), 4109 deletions(-)
> 


-- 
Jeff Mahoney
SUSE Labs

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to