Skip to content

Commit bffcd50

Browse files
ChaitanayaKulkarniChristoph Hellwig
authored andcommitted
nvmet: set right status on error in id-ns handler
The function nvmet_execute_identify_ns() doesn't set the status if call to nvmet_find_namespace() fails. In that case we set the status of the request to the value return by the nvmet_copy_sgl(). Set the status to NVME_SC_INVALID_NS and adjust the code such that request will have the right status on nvmet_find_namespace() failure. Without this patch :- NVME Identify Namespace 3: nsze : 0 ncap : 0 nuse : 0 nsfeat : 0 nlbaf : 0 flbas : 0 mc : 0 dpc : 0 dps : 0 nmic : 0 rescap : 0 fpi : 0 dlfeat : 0 nawun : 0 nawupf : 0 nacwu : 0 nabsn : 0 nabo : 0 nabspf : 0 noiob : 0 nvmcap : 0 mssrl : 0 mcl : 0 msrc : 0 nsattr : 0 nvmsetid: 0 anagrpid: 0 endgid : 0 nguid : 00000000000000000000000000000000 eui64 : 0000000000000000 lbaf 0 : ms:0 lbads:0 rp:0 (in use) With this patch-series :- feb3b88b501e (HEAD -> nvme-5.11) nvmet: remove extra variable in identify ns 6302aa67210a nvmet: remove extra variable in id-desclist ed57951da453 nvmet: remove extra variable in smart log nsid be384b8c24dc nvmet: set right status on error in id-ns handler NVMe status: INVALID_NS: The namespace or the format of that namespace is invalid(0xb) Signed-off-by: Chaitanya Kulkarni <[email protected]> Reviewed-by: Sagi Grimberg <[email protected]> Signed-off-by: Christoph Hellwig <[email protected]>
1 parent 20d3bb9 commit bffcd50

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

drivers/nvme/target/admin-cmd.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -487,8 +487,10 @@ static void nvmet_execute_identify_ns(struct nvmet_req *req)
487487

488488
/* return an all zeroed buffer if we can't find an active namespace */
489489
ns = nvmet_find_namespace(ctrl, req->cmd->identify.nsid);
490-
if (!ns)
490+
if (!ns) {
491+
status = NVME_SC_INVALID_NS;
491492
goto done;
493+
}
492494

493495
nvmet_ns_revalidate(ns);
494496

@@ -541,7 +543,9 @@ static void nvmet_execute_identify_ns(struct nvmet_req *req)
541543
id->nsattr |= (1 << 0);
542544
nvmet_put_namespace(ns);
543545
done:
544-
status = nvmet_copy_to_sgl(req, 0, id, sizeof(*id));
546+
if (!status)
547+
status = nvmet_copy_to_sgl(req, 0, id, sizeof(*id));
548+
545549
kfree(id);
546550
out:
547551
nvmet_req_complete(req, status);

0 commit comments

Comments
 (0)