Re: [PATCH 0/7] Set/get accessor speedups

Boris Burkov
2025-07-02T18:53:05Z

On Tue, Jul 01, 2025 at 07:23:47PM +0200, David Sterba wrote:
> Followup to [1] bringing refactoring that allows compiler to do more
> optimizations and stack usage reduction. As the set/get helpers are
> heavily used in many functions this improves performance. I will provide
> some numbers later as I've done mostly functional tests. During the
> development I've identified a few more possible optimizations to improve
> performance, but this series is OK as is.
>
> Overall effects of this series:
>
> Stack:
>
> btrfs_set_16 -72 (88 -> 16)
> btrfs_get_32 -56 (80 -> 24)
> btrfs_set_8 -72 (88 -> 16)
> btrfs_set_64 -64 (88 -> 24)
> btrfs_get_8 -72 (80 -> 8)
> btrfs_get_16 -64 (80 -> 16)
> btrfs_set_32 -64 (88 -> 24)
> btrfs_get_64 -56 (80 -> 24)
>
> NEW (48):
> report_setget_bounds 48
> LOST/NEW DELTA: +48
> PRE/POST DELTA: -472
>
> Code:
>
> text data bss dec hex filename
> 1456601 115665 16088 1588354 183c82 pre/btrfs.ko
> 1454229 115665 16088 1585982 18333e post/btrfs.ko
>
> DELTA: -2372

I sent some minor inline questions / suggestions, but overall this looks
great and each patch makes a good deal of sense on its own.

Reviewed-by: Boris Burkov <boris@bur.io>

>
> [1] https://lore.kernel.org/linux-btrfs/cover.1751032655.git.dsterba@suse.com/
>
> David Sterba (7):
> btrfs: accessors: simplify folio bounds checks
> btrfs: accessors: use type sizeof constants directly
> btrfs: accessors: inline eb bounds check and factor out the error
> report
> btrfs: accessors: compile-time fast path for u8
> btrfs: accessors: compile-time fast path for u16
> btrfs: accessors: set target address at initialization
> btrfs: accessors: factor out split memcpy with two sources
>
> fs/btrfs/accessors.c | 84 +++++++++++++++++++++++++++-----------------
> 1 file changed, 51 insertions(+), 33 deletions(-)
>
> --
> 2.49.0
>