OSDN Git Service

nvme: revalidate after verifying identifiers
authorKeith Busch <kbusch@kernel.org>
Thu, 9 Apr 2020 16:09:05 +0000 (09:09 -0700)
committerJens Axboe <axboe@kernel.dk>
Sat, 9 May 2020 22:18:35 +0000 (16:18 -0600)
If the namespace identifiers have changed, skip updating the disk
information, as that will register parameters from a mismatched
namespace.

Signed-off-by: Keith Busch <kbusch@kernel.org>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/nvme/host/core.c

index 0624393..b9e6e6d 100644 (file)
@@ -1936,7 +1936,6 @@ static int nvme_revalidate_disk(struct gendisk *disk)
                goto free_id;
        }
 
-       __nvme_revalidate_disk(disk, id);
        ret = nvme_report_ns_ids(ctrl, ns->head->ns_id, id, &ids);
        if (ret)
                goto free_id;
@@ -1945,8 +1944,10 @@ static int nvme_revalidate_disk(struct gendisk *disk)
                dev_err(ctrl->device,
                        "identifiers changed for nsid %d\n", ns->head->ns_id);
                ret = -ENODEV;
+               goto free_id;
        }
 
+       __nvme_revalidate_disk(disk, id);
 free_id:
        kfree(id);
 out: