]> www.infradead.org Git - users/hch/block.git/commitdiff
nvme: don't use nvme_update_disk_info for the multipath disk
authorChristoph Hellwig <hch@lst.de>
Mon, 26 Feb 2024 15:44:01 +0000 (10:44 -0500)
committerChristoph Hellwig <hch@lst.de>
Thu, 29 Feb 2024 15:01:34 +0000 (07:01 -0800)
Currently nvme_update_ns_info_block calls nvme_update_disk_info both for
the namespace attached disk, and the multipath one (if it exists).  This
is very different from how other stacking drivers work, and leads to
a lot of complexity.

Switch to setting the disk capacity and initializing the integrity
profile, and let blk_stack_limits which already is called just below
deal with updating the other limits.

Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/host/core.c

index 105046a79572725fb3ee4c4c70ebe2a56e8f622b..0bf30580f29d5b27205c64ec9efa5a194cd41b79 100644 (file)
@@ -2159,7 +2159,8 @@ static int nvme_update_ns_info_block(struct nvme_ns *ns,
 
        if (nvme_ns_head_multipath(ns->head)) {
                blk_mq_freeze_queue(ns->head->disk->queue);
-               nvme_update_disk_info(ns->ctrl, ns->head->disk, ns->head, id);
+               nvme_init_integrity(ns->head->disk, ns->head);
+               set_capacity_and_notify(ns->head->disk, get_capacity(ns->disk));
                set_disk_ro(ns->head->disk, nvme_ns_is_readonly(ns, info));
                nvme_mpath_revalidate_paths(ns);
                blk_stack_limits(&ns->head->disk->queue->limits,