[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