From: Damien Le Moal <dlemoal@kernel.org>
To: linux-block@vger.kernel.org, Jens Axboe <axboe@kernel.dk>,
linux-nvme@lists.infradead.org, Christoph Hellwig <hch@lst.de>,
Keith Busch <kbusch@kernel.org>,
linux-scsi@vger.kernel.org,
"Martin K . Petersen" <martin.petersen@oracle.com>
Subject: [PATCH v2 0/5] Improve checks in blk_revalidate_disk_zones()
Date: Fri, 30 Jun 2023 17:39:30 +0900 [thread overview]
Message-ID: <20230630083935.433334-1-dlemoal@kernel.org> (raw)
blk_revalidate_disk_zones() implements checks of the zones of a zoned
block device, verifying that the zone size is a power of 2 number of
sectors, that all zones (except possibly the last one) have the same
size and that zones cover the entire addressing space of the device.
While these checks are appropriate to verify that well tested hardware
devices have an adequate zone configurations, they lack in certain areas
which may result in issues with potentially buggy emulated devices
implemented with user drivers such as ublk or tcmu. Specifically, this
function does not check if the device driver indicated support for the
mandatory zone append writes, that is, if the device
max_zone_append_sectors queue limit is set to a non-zero value.
Additionally, invalid zones such as a zero length zone with a start
sector equal to the device capacity will not be detected and result in
out of bounds use of the zone bitmaps prepared with the callback
function blk_revalidate_zone_cb().
This series address these issues by modifying the 4 block device drivers
that currently support zoned block devices to ensure that they all set a
zoned device zone size and max zone append sectors limit before
executing blk_revalidate_disk_zones(). With these changes in place,
patch 5 improves blk_revalidate_disk_zones() to address the missing
checks, relying on the fact that the zone size and zone append limit are
normally set when this function is called.
Changes from v1:
- Updated this cover letter and commit messages to include better
explain for these patches
- Reworked patch 5 to simplify the checks
Damien Le Moal (5):
scsi: sd_zbc: Set zone limits before revalidating zones
nvme: zns: Set zone limits before revalidating zones
block: nullblk: Set zone limits before revalidating zones
block: virtio_blk: Set zone limits before revalidating zones
block: improve checks in blk_revalidate_disk_zones()
block/blk-zoned.c | 86 ++++++++++++++++++++--------------
drivers/block/null_blk/zoned.c | 16 ++-----
drivers/block/virtio_blk.c | 34 ++++++--------
drivers/nvme/host/zns.c | 9 ++--
drivers/scsi/sd_zbc.c | 12 ++---
5 files changed, 79 insertions(+), 78 deletions(-)
--
2.41.0
next reply other threads:[~2023-06-30 8:39 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-30 8:39 Damien Le Moal [this message]
2023-06-30 8:39 ` [PATCH v2 1/5] scsi: sd_zbc: Set zone limits before revalidating zones Damien Le Moal
2023-07-06 12:39 ` Christoph Hellwig
2023-06-30 8:39 ` [PATCH v2 2/5] nvme: zns: " Damien Le Moal
2023-07-06 12:40 ` Christoph Hellwig
2023-06-30 8:39 ` [PATCH v2 3/5] block: nullblk: " Damien Le Moal
2023-07-06 12:41 ` Christoph Hellwig
2023-06-30 8:39 ` [PATCH v2 4/5] block: virtio_blk: " Damien Le Moal
2023-07-02 22:29 ` Dmitry Fomichev
2023-07-06 12:41 ` Christoph Hellwig
2023-06-30 8:39 ` [PATCH v2 5/5] block: improve checks in blk_revalidate_disk_zones() Damien Le Moal
2023-07-06 12:42 ` Christoph Hellwig
2023-06-30 23:21 ` [PATCH v2 0/5] Improve " Bart Van Assche
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230630083935.433334-1-dlemoal@kernel.org \
--to=dlemoal@kernel.org \
--cc=axboe@kernel.dk \
--cc=hch@lst.de \
--cc=kbusch@kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).