|
@@ -520,9 +520,12 @@ bool nvmet_req_init(struct nvmet_req *req, struct nvmet_cq *cq,
|
|
goto fail;
|
|
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;
|
|
status = NVME_SC_INVALID_FIELD | NVME_SC_DNR;
|
|
goto fail;
|
|
goto fail;
|
|
}
|
|
}
|