[PATCH 1/6] nvme: catch -ENODEV from nvme_revalidate_zones again
Joel Granados
j.granados at samsung.com
Thu Jul 21 02:53:49 PDT 2022
On Thu, Jul 21, 2022 at 08:03:15AM +0200, Christoph Hellwig wrote:
> nvme_revalidate_zones can also return -ENODEV if e.g. zone sizes aren't
> constant or not a power of two. In that case we should jump to marking
> the gendisk hidden and only support pass through.
>
> Fixes: 602e57c9799c ("nvme: also mark passthrough-only namespaces ready in nvme_update_ns_info")
> Reported-by: Joel Granados <j.granados at samsung.com>
> Signed-off-by: Christoph Hellwig <hch at lst.de>
> ---
> drivers/nvme/host/core.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index 698e71680e6f3..2e1af9b5c8a91 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -1940,8 +1940,10 @@ static int nvme_update_ns_info(struct nvme_ns *ns, struct nvme_id_ns *id)
>
> if (ns->head->ids.csi == NVME_CSI_ZNS) {
> ret = nvme_update_zone_info(ns, lbaf);
> - if (ret)
> - goto out_unfreeze;
> + if (ret) {
> + blk_mq_unfreeze_queue(ns->disk->queue);
> + goto out;
> + }
> }
>
> set_disk_ro(ns->disk, (id->nsattr & NVME_NS_ATTR_RO) ||
> @@ -1952,7 +1954,7 @@ static int nvme_update_ns_info(struct nvme_ns *ns, struct nvme_id_ns *id)
> if (blk_queue_is_zoned(ns->queue)) {
> ret = nvme_revalidate_zones(ns);
> if (ret && !nvme_first_scan(ns->disk))
> - return ret;
> + goto out;
> }
>
> if (nvme_ns_head_multipath(ns->head)) {
> @@ -1967,9 +1969,9 @@ static int nvme_update_ns_info(struct nvme_ns *ns, struct nvme_id_ns *id)
> disk_update_readahead(ns->head->disk);
> blk_mq_unfreeze_queue(ns->head->disk->queue);
> }
> - return 0;
>
> -out_unfreeze:
> + ret = 0;
> +out:
> /*
> * If probing fails due an unsupported feature, hide the block device,
> * but still allow other access.
> @@ -1979,7 +1981,6 @@ static int nvme_update_ns_info(struct nvme_ns *ns, struct nvme_id_ns *id)
> set_bit(NVME_NS_READY, &ns->flags);
> ret = 0;
> }
> - blk_mq_unfreeze_queue(ns->disk->queue);
> return ret;
> }
>
> --
> 2.30.2
>
LGTM.
Reviewed-by: Joel Granados <j.granados at samsung.com>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-nvme/attachments/20220721/f09c6f0e/attachment.sig>
More information about the Linux-nvme
mailing list