Commit 9c10f2b1 authored by Jens Axboe's avatar Jens Axboe

Merge tag 'nvme-6.8-2024-02-15' of git://git.infradead.org/nvme into block-6.8

Pull NVMe fixes from Keith:

"nvme fixes for Linux 6.8

 - Fabrics connection error handling (Chaitanya)
 - Use relaxed effects to reduce unnecessary queue freezes (Keith)"

* tag 'nvme-6.8-2024-02-15' of git://git.infradead.org/nvme:
  nvmet: remove superfluous initialization
  nvme: implement support for relaxed effects
  nvme-fabrics: fix I/O connect error handling
parents 5f63a493 8d30528a
...@@ -1153,6 +1153,10 @@ u32 nvme_command_effects(struct nvme_ctrl *ctrl, struct nvme_ns *ns, u8 opcode) ...@@ -1153,6 +1153,10 @@ u32 nvme_command_effects(struct nvme_ctrl *ctrl, struct nvme_ns *ns, u8 opcode)
effects &= ~NVME_CMD_EFFECTS_CSE_MASK; effects &= ~NVME_CMD_EFFECTS_CSE_MASK;
} else { } else {
effects = le32_to_cpu(ctrl->effects->acs[opcode]); effects = le32_to_cpu(ctrl->effects->acs[opcode]);
/* Ignore execution restrictions if any relaxation bits are set */
if (effects & NVME_CMD_EFFECTS_CSER_MASK)
effects &= ~NVME_CMD_EFFECTS_CSE_MASK;
} }
return effects; return effects;
......
...@@ -534,6 +534,7 @@ int nvmf_connect_io_queue(struct nvme_ctrl *ctrl, u16 qid) ...@@ -534,6 +534,7 @@ int nvmf_connect_io_queue(struct nvme_ctrl *ctrl, u16 qid)
if (ret) { if (ret) {
nvmf_log_connect_error(ctrl, ret, le32_to_cpu(res.u32), nvmf_log_connect_error(ctrl, ret, le32_to_cpu(res.u32),
&cmd, data); &cmd, data);
goto out_free_data;
} }
result = le32_to_cpu(res.u32); result = le32_to_cpu(res.u32);
if (result & (NVME_CONNECT_AUTHREQ_ATR | NVME_CONNECT_AUTHREQ_ASCR)) { if (result & (NVME_CONNECT_AUTHREQ_ATR | NVME_CONNECT_AUTHREQ_ASCR)) {
......
...@@ -209,7 +209,7 @@ static void nvmet_execute_admin_connect(struct nvmet_req *req) ...@@ -209,7 +209,7 @@ static void nvmet_execute_admin_connect(struct nvmet_req *req)
struct nvmf_connect_command *c = &req->cmd->connect; struct nvmf_connect_command *c = &req->cmd->connect;
struct nvmf_connect_data *d; struct nvmf_connect_data *d;
struct nvmet_ctrl *ctrl = NULL; struct nvmet_ctrl *ctrl = NULL;
u16 status = 0; u16 status;
int ret; int ret;
if (!nvmet_check_transfer_len(req, sizeof(struct nvmf_connect_data))) if (!nvmet_check_transfer_len(req, sizeof(struct nvmf_connect_data)))
...@@ -290,7 +290,7 @@ static void nvmet_execute_io_connect(struct nvmet_req *req) ...@@ -290,7 +290,7 @@ static void nvmet_execute_io_connect(struct nvmet_req *req)
struct nvmf_connect_data *d; struct nvmf_connect_data *d;
struct nvmet_ctrl *ctrl; struct nvmet_ctrl *ctrl;
u16 qid = le16_to_cpu(c->qid); u16 qid = le16_to_cpu(c->qid);
u16 status = 0; u16 status;
if (!nvmet_check_transfer_len(req, sizeof(struct nvmf_connect_data))) if (!nvmet_check_transfer_len(req, sizeof(struct nvmf_connect_data)))
return; return;
......
...@@ -646,6 +646,7 @@ enum { ...@@ -646,6 +646,7 @@ enum {
NVME_CMD_EFFECTS_NCC = 1 << 2, NVME_CMD_EFFECTS_NCC = 1 << 2,
NVME_CMD_EFFECTS_NIC = 1 << 3, NVME_CMD_EFFECTS_NIC = 1 << 3,
NVME_CMD_EFFECTS_CCC = 1 << 4, NVME_CMD_EFFECTS_CCC = 1 << 4,
NVME_CMD_EFFECTS_CSER_MASK = GENMASK(15, 14),
NVME_CMD_EFFECTS_CSE_MASK = GENMASK(18, 16), NVME_CMD_EFFECTS_CSE_MASK = GENMASK(18, 16),
NVME_CMD_EFFECTS_UUID_SEL = 1 << 19, NVME_CMD_EFFECTS_UUID_SEL = 1 << 19,
NVME_CMD_EFFECTS_SCOPE_MASK = GENMASK(31, 20), NVME_CMD_EFFECTS_SCOPE_MASK = GENMASK(31, 20),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment