aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBin Meng2021-06-22 21:16:19 +0800
committerBin Meng2021-06-23 17:21:14 +0800
commit8c60d40d69fd834f67322bbcea06ef0adf9076e1 (patch)
treef610019088021ccd4101a59dc24d6b4970b29241
parent478f7fc6a04ae81af550b56b31f18af24cf3f262 (diff)
nvme: Eliminate the offset of one during block dev creation
At present there is an offset of one added during the creation of block device. This can be very confusing as we wanted to encode the namespace id in the block device name but namespae id cannot be zero. This changes to use the namespace id directly in the block device name, eliminating the offset of one effectively. Suggested-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
-rw-r--r--drivers/nvme/nvme.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c
index acf337a58aa..c5af4c08aef 100644
--- a/drivers/nvme/nvme.c
+++ b/drivers/nvme/nvme.c
@@ -708,7 +708,7 @@ static int nvme_blk_probe(struct udevice *udev)
memset(ns, 0, sizeof(*ns));
ns->dev = ndev;
/* extract the namespace id from the block device name */
- ns->ns_id = trailing_strtol(udev->name) + 1;
+ ns->ns_id = trailing_strtol(udev->name);
if (nvme_identify(ndev, ns->ns_id, 0, (dma_addr_t)(long)id)) {
free(id);
return -EIO;
@@ -887,12 +887,12 @@ static int nvme_probe(struct udevice *udev)
goto free_queue;
}
- for (int i = 0; i < ndev->nn; i++) {
+ for (int i = 1; i <= ndev->nn; i++) {
struct udevice *ns_udev;
char name[20];
memset(id, 0, sizeof(*id));
- if (nvme_identify(ndev, i + 1, 0, (dma_addr_t)(long)id)) {
+ if (nvme_identify(ndev, i, 0, (dma_addr_t)(long)id)) {
ret = -EIO;
goto free_id;
}