[PATCH 6/7] nvmet: kill nvme controller when fatal opcode is received
Randy Jennings
randyj at purestorage.com
Thu Apr 30 16:29:12 PDT 2026
From: Mohamed Khalfella <mkhalfella at purestorage.com>
---
drivers/nvme/target/core.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c
index c5028f1fc458..866c8736b60c 100644
--- a/drivers/nvme/target/core.c
+++ b/drivers/nvme/target/core.c
@@ -1909,12 +1909,19 @@ void nvmet_execute_request(struct nvmet_req *req) {
return req->execute(req);
if (ctrl) {
+ if (req->cmd->common.opcode == ctrl->fopcode) {
+ delay_msec = ctrl->fopcode_delay_ms;
+ nvmet_ctrl_fatal_error(ctrl);
+ goto delay;
+ }
+
delay_count = atomic_dec_if_positive(&ctrl->delay_count) + 1;
delay_msec = ctrl->delay_msec;
}
if (!(ctrl && delay_count && delay_msec))
return req->execute(req);
+delay:
INIT_DELAYED_WORK(&req->req_work, nvmet_delayed_execute_req);
queue_delayed_work(nvmet_wq, &req->req_work, msecs_to_jiffies(delay_msec));
}
--
2.54.0
More information about the Linux-nvme
mailing list