hw/nvme: Return error for fused operations
Currently, FUSED operations are not supported by QEMU. As per the 1.4 SPEC, controller should abort the command that requested a fused operation with an INVALID FIELD error code if they are not supported. Changes from v1: Added FUSE flag check also to the admin cmd processing as the FUSED operations are mentioned in the general SQE section in the SPEC. Signed-off-by: Pankaj Raghav <p.raghav@samsung.com> Reviewed-by: Keith Busch <kbusch@kernel.org> Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
This commit is contained in:
parent
07a3dfa7c4
commit
c53a9a9102
@ -3893,6 +3893,10 @@ static uint16_t nvme_io_cmd(NvmeCtrl *n, NvmeRequest *req)
|
|||||||
return ns->status;
|
return ns->status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (NVME_CMD_FLAGS_FUSE(req->cmd.flags)) {
|
||||||
|
return NVME_INVALID_FIELD;
|
||||||
|
}
|
||||||
|
|
||||||
req->ns = ns;
|
req->ns = ns;
|
||||||
|
|
||||||
switch (req->cmd.opcode) {
|
switch (req->cmd.opcode) {
|
||||||
@ -5475,6 +5479,10 @@ static uint16_t nvme_admin_cmd(NvmeCtrl *n, NvmeRequest *req)
|
|||||||
return NVME_INVALID_FIELD | NVME_DNR;
|
return NVME_INVALID_FIELD | NVME_DNR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (NVME_CMD_FLAGS_FUSE(req->cmd.flags)) {
|
||||||
|
return NVME_INVALID_FIELD;
|
||||||
|
}
|
||||||
|
|
||||||
switch (req->cmd.opcode) {
|
switch (req->cmd.opcode) {
|
||||||
case NVME_ADM_CMD_DELETE_SQ:
|
case NVME_ADM_CMD_DELETE_SQ:
|
||||||
return nvme_del_sq(n, req);
|
return nvme_del_sq(n, req);
|
||||||
|
Loading…
Reference in New Issue
Block a user