[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YzRYrNBB35fLjAO4@redhat.com>
Date: Wed, 28 Sep 2022 10:22:36 -0400
From: Mike Snitzer <snitzer@...hat.com>
To: Pankaj Raghav <p.raghav@...sung.com>
Cc: snitzer@...nel.org, axboe@...nel.dk, agk@...hat.com, hch@....de,
damien.lemoal@...nsource.wdc.com,
Damien Le Moal <damien.lemoal@....com>, bvanassche@....org,
pankydev8@...il.com, gost.dev@...sung.com,
linux-kernel@...r.kernel.org, linux-nvme@...ts.infradead.org,
linux-block@...r.kernel.org, dm-devel@...hat.com,
Johannes Thumshirn <johannes.thumshirn@....com>,
jaegeuk@...nel.org, matias.bjorling@....com
Subject: Re: [PATCH v15 13/13] dm: add power-of-2 target for zoned devices
with non power-of-2 zone sizes
On Fri, Sep 23 2022 at 1:36P -0400,
Pankaj Raghav <p.raghav@...sung.com> wrote:
> Only zoned devices with power-of-2(po2) number of sectors per zone(zone
> size) were supported in linux but now non power-of-2(npo2) zone sizes
> support has been added to the block layer.
>
> Filesystems such as F2FS and btrfs have support for zoned devices with
> po2 zone size assumption. Before adding native support for npo2 zone
> sizes, it was suggested to create a dm target for npo2 zone size device to
> appear as a po2 zone size target so that file systems can initially
> work without any explicit changes.
>
> The design of this target is very simple: remap the device zone size to
> the zone capacity and change the zone size to be the nearest power of 2
> value.
>
> For e.g., a device with a zone size/capacity of 3M will have an equivalent
> target layout as follows:
>
> Device layout :-
> zone capacity = 3M
> zone size = 3M
>
> |--------------|-------------|
> 0 3M 6M
>
> Target layout :-
> zone capacity=3M
> zone size = 4M
>
> |--------------|---|--------------|---|
> 0 3M 4M 7M 8M
>
> The area between target's zone capacity and zone size will be emulated
> in the target.
> The read IOs that fall in the emulated gap area will return 0 filled
> bio and all the other IOs in that area will result in an error.
> If a read IO span across the emulated area boundary, then the IOs are
> split across them. All other IO operations that span across the emulated
> area boundary will result in an error.
>
> The target can be easily created as follows:
> dmsetup create <label> --table '0 <size_sects> po2zoned /dev/nvme<id>'
>
> The target does not support partial mapping of the underlying
> device as there is no use-case for it.
>
> Note:
> This target is not related to dm-zoned target, which exposes a zoned block
> device as a regular block device without any write constraint.
>
> This target only exposes a different zone size than the underlying device.
> The underlying device's other constraints will be directly exposed to the
> target.
>
> Signed-off-by: Pankaj Raghav <p.raghav@...sung.com>
> Suggested-by: Johannes Thumshirn <johannes.thumshirn@....com>
> Suggested-by: Damien Le Moal <damien.lemoal@....com>
> Suggested-by: Hannes Reinecke <hare@...e.de>
If/when this series is accepted by Jens and others the DM changes can
just be included along with the rest of the series.
Reviewed-by: Mike Snitzer <snitzer@...nel.org>
Powered by blists - more mailing lists