From: Christoph Hellwig <hch@lst.de>
To: Chao Shi <coshi036@gmail.com>
Cc: kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, axboe@kernel.dk,
joshi.k@samsung.com, linux-nvme@lists.infradead.org,
linux-kernel@vger.kernel.org, stable@vger.kernel.org,
Weidong Zhu <weizhu@fiu.edu>
Subject: Re: [PATCH v2] nvme: skip the zoned limits update if the zone info query failed
Date: Mon, 17 Aug 2026 08:55:53 +0200 [thread overview]
Message-ID: <20260817065553.GB16255@lst.de> (raw)
In-Reply-To: <20260816191729.2865523-1-coshi036@gmail.com>
On Sun, Aug 16, 2026 at 03:17:29PM -0400, Chao Shi wrote:
> nvme_query_zone_info() returns either a negative errno or a positive
> NVMe status code, but nvme_update_ns_info_block() only tests for the
> negative case:
>
> ret = nvme_query_zone_info(ns, lbaf, &zi);
> if (ret < 0)
> goto out;
>
> If the device fails the Identify Namespace (I/O Command Set specific)
> command, or the Identify Controller command issued by
> nvme_set_max_append(), the positive status falls through and setup
> continues with the zero-initialized zone info. nvme_update_zone_info()
> then marks the queue zoned with chunk_sectors and ns->head->zsze set to
> zero.
>
> blk_validate_zoned_limits() does not check chunk_sectors, so the limits
> commit succeeds. blk_revalidate_disk_zones() does reject the zero zone
> size, but by then the limits are live and nothing rolls them back, so
> I/O keeps being submitted to a zoned queue with a zero zone size and
> disk_zone_no() shifts by ilog2(0):
Did you do error injections to get here?
> + /*
> + * A failed zone info query leaves zi zero-initialized. Leave the
> + * namespace registered so that it can still be used as a device
> + * handle, but do not configure the zoned limits from it.
> + */
> if (IS_ENABLED(CONFIG_BLK_DEV_ZONED) &&
> - ns->head->ids.csi == NVME_CSI_ZNS)
> + ns->head->ids.csi == NVME_CSI_ZNS && zi.zone_size)
> nvme_update_zone_info(ns, &lim, &zi);
The most common case for this is probably during revalidation of some
kind, and then we'll just keep the old values. Which in general
should be fine, but might be worth mentioning in this comment?
Also we should probably log a message that we either just register
the handle or keep the old values?
prev parent reply other threads:[~2026-08-17 6:55 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-16 19:17 [PATCH v2] nvme: skip the zoned limits update if the zone info query failed Chao Shi
2026-08-17 6:17 ` Damien Le Moal
2026-08-17 6:53 ` Christoph Hellwig
2026-08-17 6:55 ` Christoph Hellwig [this message]
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=20260817065553.GB16255@lst.de \
--to=hch@lst.de \
--cc=axboe@kernel.dk \
--cc=coshi036@gmail.com \
--cc=joshi.k@samsung.com \
--cc=kbusch@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=sagi@grimberg.me \
--cc=stable@vger.kernel.org \
--cc=weizhu@fiu.edu \
/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