mbox series

[00/19] Set/get helpers speedups and cleanups

Message ID cover.1588853772.git.dsterba@suse.com (mailing list archive)
Headers show
Series Set/get helpers speedups and cleanups | expand

Message

David Sterba May 7, 2020, 8:19 p.m. UTC
Set/get helpers are all the functions that read or write b-tree item
members, like btrfs_device_type, btrfs_set_device_type, or the variants
with token btrfs_token_device_type, defined in ctree.h with
BTRFS_SETGET_FUNCS. Most of them are implemented by btrfs_get_8/16/32/64
and btrfs_set_8/16/32/64 functions.

The helpers are used all over the place and can be seen in perf top
results quite often, though it's about 0.5-1.5%. This series simplifies
the helpers and removes function calls that do the translation from/to
the input buffers to/from the extent buffer pages.

I don't have exact number to show the speedup, watching perf top and the
same workload at least does not point to a drop, the functions are still
in the overall range 0.5-1.5%. The code cleanups result in a
straightforward code, also map_private_extent_buffer is gone!!!

David Sterba (19):
  btrfs: use the token::eb for all set/get helpers
  btrfs: drop eb parameter from set/get token helpers
  btrfs: don't use set/get token for single assignment in overwrite_item
  btrfs: don't use set/get token in leaf_space_used
  btrfs: preset set/get token with first page and drop condition
  btrfs: add separate bounds checker for set/get helpers
  btrfs: speed up btrfs_get_##bits helpers
  btrfs: speed up btrfs_get_token_##bits helpers
  btrfs: speed up btrfs_set_##bits helpers
  btrfs: speed up btrfs_set_token_##bits helpers
  btrfs: speed up and simplify generic_bin_search
  btrfs: remove unused map_private_extent_buffer
  btrfs: constify extent_buffer in the API functions
  btrfs: drop unnecessary offset_in_page in extent buffer helpers
  btrfs: optimize split page read in btrfs_get_##bits
  btrfs: optimize split page read in btrfs_get_token_##bits
  btrfs: optimize split page write in btrfs_set_##bits
  btrfs: optimize split page write in btrfs_set_token_##bits
  btrfs: update documentation of set/get helpers

 fs/btrfs/ctree.c        |  98 +++++++-----------
 fs/btrfs/ctree.h        |  58 +++++------
 fs/btrfs/extent_io.c    | 137 ++++++++-----------------
 fs/btrfs/extent_io.h    |  48 ++++-----
 fs/btrfs/inode.c        |  71 ++++++-------
 fs/btrfs/struct-funcs.c | 222 ++++++++++++++++++++--------------------
 fs/btrfs/tree-log.c     | 130 +++++++++++------------
 7 files changed, 337 insertions(+), 427 deletions(-)