Pull block fixes from Jens Axboe: "Just an nvme pull request via Keith: - Fabrics connection error handling (Chaitanya) - Use relaxed effects to reduce unnecessary queue freezes (Keith)" * tag 'block-6.8-2024-02-16' of git://git.kernel.dk/linux: nvmet: remove superfluous initialization nvme: implement support for relaxed effects nvme-fabrics: fix I/O connect error handling
Unified · Split
| @@ -1153,6 +1153,10 @@ u32 nvme_command_effects(struct nvme_ctrl *ctrl, struct nvme_ns *ns, u8 opcode) · 1152 unmodified lines | ||
| 1153 | 1153 | effects &= ~NVME_CMD_EFFECTS_CSE_MASK; |
| 1154 | 1154 | } else { |
| 1155 | 1155 | effects = le32_to_cpu(ctrl->effects->acs[opcode]); |
| 1156 | + | |
| 1157 | + /* Ignore execution restrictions if any relaxation bits are set */ | |
| 1158 | + if (effects & NVME_CMD_EFFECTS_CSER_MASK) | |
| 1159 | + effects &= ~NVME_CMD_EFFECTS_CSE_MASK; | |
| 1156 | 1160 | } |
| 1157 | 1161 | |
| 1158 | 1162 | return effects; |
| @@ -534,6 +534,7 @@ int nvmf_connect_io_queue(struct nvme_ctrl *ctrl, u16 qid) · 533 unmodified lines | ||
| 534 | 534 | if (ret) { |
| 535 | 535 | nvmf_log_connect_error(ctrl, ret, le32_to_cpu(res.u32), |
| 536 | 536 | &cmd, data); |
| 537 | + goto out_free_data; | |
| 537 | 538 | } |
| 538 | 539 | result = le32_to_cpu(res.u32); |
| 539 | 540 | if (result & (NVME_CONNECT_AUTHREQ_ATR | NVME_CONNECT_AUTHREQ_ASCR)) { |
| @@ -209,7 +209,7 @@ static void nvmet_execute_admin_connect(struct nvmet_req *req) · 208 unmodified lines | ||
| 209 | 209 | struct nvmf_connect_command *c = &req->cmd->connect; |
| 210 | 210 | struct nvmf_connect_data *d; |
| 211 | 211 | struct nvmet_ctrl *ctrl = NULL; |
| 212 | − u16 status = 0; | |
| 212 | + u16 status; | |
| 213 | 213 | int ret; |
| 214 | 214 | |
| 215 | 215 | 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) · 74 unmodified lines | ||
| 290 | 290 | struct nvmf_connect_data *d; |
| 291 | 291 | struct nvmet_ctrl *ctrl; |
| 292 | 292 | u16 qid = le16_to_cpu(c->qid); |
| 293 | − u16 status = 0; | |
| 293 | + u16 status; | |
| 294 | 294 | |
| 295 | 295 | if (!nvmet_check_transfer_len(req, sizeof(struct nvmf_connect_data))) |
| 296 | 296 | return; |
| @@ -646,6 +646,7 @@ enum { · 645 unmodified lines | ||
| 646 | 646 | NVME_CMD_EFFECTS_NCC = 1 << 2, |
| 647 | 647 | NVME_CMD_EFFECTS_NIC = 1 << 3, |
| 648 | 648 | NVME_CMD_EFFECTS_CCC = 1 << 4, |
| 649 | + NVME_CMD_EFFECTS_CSER_MASK = GENMASK(15, 14), | |
| 649 | 650 | NVME_CMD_EFFECTS_CSE_MASK = GENMASK(18, 16), |
| 650 | 651 | NVME_CMD_EFFECTS_UUID_SEL = 1 << 19, |
| 651 | 652 | NVME_CMD_EFFECTS_SCOPE_MASK = GENMASK(31, 20), |