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(-) -- 2.25.0
