[PATCH v2 1/2] nvmet: return Invalid Field for invalid NSIDs in Set Features 82h
Nilay Shroff
nilay at linux.ibm.com
Sun Sep 20 04:07:08 PDT 2026
On 9/20/26 9:04 AM, Guixin Liu wrote:
> diff --git a/drivers/nvme/target/pr.c b/drivers/nvme/target/pr.c
> index 0948a690a1c0..a36c732883d4 100644
> --- a/drivers/nvme/target/pr.c
> +++ b/drivers/nvme/target/pr.c
> @@ -51,6 +51,8 @@ u16 nvmet_set_feat_resv_notif_mask(struct nvmet_req *req, u32 mask)
>
> if (nsid != U32_MAX) {
> status = nvmet_req_find_ns(req);
> + if (status == (NVME_SC_INVALID_NS | NVME_STATUS_DNR))
> + return NVME_SC_INVALID_FIELD | NVME_STATUS_DNR;
> if (status)
> return status;
> if (!req->ns->pr.enable)
> --
This looks good to me. However, to avoid hand-coding the same error
return code multiple times in the function and to make it a bit more
readable, how about modifying it as follows?
u16 nvmet_get_feat_resv_notif_mask(struct nvmet_req *req)
{
u16 status;
u16 err = NVME_SC_INVALID_FIELD | NVME_STATUS_DNR;
status = nvmet_req_find_ns(req);
if (status) {
if (status == (NVME_SC_INVALID_NS | NVME_STATUS_DNR))
return err;
return status;
}
if (!req->ns->pr.enable)
return err;
nvmet_set_result(req, READ_ONCE(req->ns->pr.notify_mask));
return NVME_SC_SUCCESS;
}
Thanks,
--Nilay
More information about the Linux-nvme
mailing list