[PATCH v2 1/1] nvmet: fix PSDT field check in command format
Max Gurtovoy
maxg at mellanox.com
Tue Feb 27 15:42:43 PST 2018
ping :)
On 1/24/2018 5:31 PM, Max Gurtovoy wrote:
> PSDT field section according to NVM_Express-1.3:
> "This field specifies whether PRPs or SGLs are used for any data
> transfer associated with the command. PRPs shall be used for all
> Admin commands for NVMe over PCIe. SGLs shall be used for all Admin
> and I/O commands for NVMe over Fabrics. This field shall be set to
> 01b for NVMe over Fabrics 1.0 implementations.
>
> Suggested-by: Idan Burstein <idanb at mellanox.com>
> Signed-off-by: Max Gurtovoy <maxg at mellanox.com>
> ---
>
> Changes from v1:
> - use tabs for comment indentation
>
> ---
> drivers/nvme/target/core.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c
> index 0bd7371..a78029e 100644
> --- a/drivers/nvme/target/core.c
> +++ b/drivers/nvme/target/core.c
> @@ -520,9 +520,12 @@ bool nvmet_req_init(struct nvmet_req *req, struct nvmet_cq *cq,
> goto fail;
> }
>
> - /* either variant of SGLs is fine, as we don't support metadata */
> - if (unlikely((flags & NVME_CMD_SGL_ALL) != NVME_CMD_SGL_METABUF &&
> - (flags & NVME_CMD_SGL_ALL) != NVME_CMD_SGL_METASEG)) {
> + /*
> + * For fabrics, PSDT field shall describe metadata pointer (MPTR) that
> + * contains an address of a single contiguous physical buffer that is
> + * byte aligned.
> + */
> + if (unlikely((flags & NVME_CMD_SGL_ALL) != NVME_CMD_SGL_METABUF)) {
> status = NVME_SC_INVALID_FIELD | NVME_SC_DNR;
> goto fail;
> }
>
More information about the Linux-nvme
mailing list