OSDN Git Service

btrfs: precalculate checksums per leaf once
authorDavid Sterba <dsterba@suse.com>
Thu, 2 Jul 2020 08:54:11 +0000 (10:54 +0200)
committerDavid Sterba <dsterba@suse.com>
Tue, 8 Dec 2020 14:53:58 +0000 (15:53 +0100)
commitfe5ecbe818de38774895305e1f2d48972f1b745f
tree098ab0742863dee92a57cc1dc3cf6bb6c624cb06
parent22b6331d961712ac2735423e5a6c04e9d0fd7897
btrfs: precalculate checksums per leaf once

btrfs_csum_bytes_to_leaves shows up in system profiles, which makes it a
candidate for optimizations. After the 64bit division has been replaced
by shift, there's still a calculation done each time the function is
called: checksums per leaf.

As this is a constant value for the entire filesystem lifetime, we
can calculate it once at mount time and reuse. This also allows to
reduce the division to 64bit/32bit as we know the constant will always
fit the 32bit type.

Replace the open-coded rounding up with a macro that internally handles
the 64bit division and as it's now a short function, make it static
inline (slight code increase, slight stack usage reduction).

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ctree.h
fs/btrfs/disk-io.c
fs/btrfs/extent-tree.c