[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220516215826.GZ18596@twin.jikos.cz>
Date: Mon, 16 May 2022 23:58:26 +0200
From: David Sterba <dsterba@...e.cz>
To: Pankaj Raghav <p.raghav@...sung.com>
Cc: axboe@...nel.dk, damien.lemoal@...nsource.wdc.com,
pankydev8@...il.com, dsterba@...e.com, hch@....de,
linux-nvme@...ts.infradead.org, linux-fsdevel@...r.kernel.org,
linux-btrfs@...r.kernel.org, jiangbo.365@...edance.com,
linux-block@...r.kernel.org, gost.dev@...sung.com,
linux-kernel@...r.kernel.org, dm-devel@...hat.com,
Luis Chamberlain <mcgrof@...nel.org>
Subject: Re: [PATCH v4 05/13] btrfs: zoned: Cache superblock location in
btrfs_zoned_device_info
On Mon, May 16, 2022 at 06:54:08PM +0200, Pankaj Raghav wrote:
> Instead of calculating the superblock location every time, cache the
> superblock zone location in btrfs_zoned_device_info struct and use it to
> locate the zone index.
>
> The functions such as btrfs_sb_log_location_bdev() and
> btrfs_reset_sb_log_zones() which work directly on block_device shall
> continue to use the sb_zone_number because btrfs_zoned_device_info
> struct might not have been initialized at that point.
>
> This patch will enable non power-of-2 zoned devices to not perform
> division to lookup superblock and its mirror location.
>
> Reviewed-by: Luis Chamberlain <mcgrof@...nel.org>
> Signed-off-by: Pankaj Raghav <p.raghav@...sung.com>
> ---
> fs/btrfs/zoned.c | 13 +++++++++----
> fs/btrfs/zoned.h | 1 +
> 2 files changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/fs/btrfs/zoned.c b/fs/btrfs/zoned.c
> index 06f22c021..e8c7cebb2 100644
> --- a/fs/btrfs/zoned.c
> +++ b/fs/btrfs/zoned.c
> @@ -511,6 +511,11 @@ int btrfs_get_dev_zone_info(struct btrfs_device *device, bool populate_cache)
> max_active_zones - nactive);
> }
>
> + /* Cache the sb zone number */
> + for (i = 0; i < BTRFS_SUPER_MIRROR_MAX; ++i) {
> + zone_info->sb_zone_location[i] =
> + sb_zone_number(zone_info->zone_size_shift, i);
> + }
I don't think we need to cache the value right now, it's not in any hot
path and call to bdev_zone_no is relatively cheap (only dereferencing a
few pointers, all in-memory values).
Powered by blists - more mailing lists