Page MenuHomeFreeBSD

D31341.id93147.diff
No OneTemporary

D31341.id93147.diff

Index: sys/dev/nvme/nvme_qpair.c
===================================================================
--- sys/dev/nvme/nvme_qpair.c
+++ sys/dev/nvme/nvme_qpair.c
@@ -1074,12 +1074,10 @@
if (qpair->ctrlr->is_failed) {
/*
- * The controller has failed. Post the request to a
- * task where it will be aborted, so that we do not
- * invoke the request's callback in the context
- * of the submission.
+ * The controller has failed, so fail the request.
*/
- nvme_ctrlr_post_failed_request(qpair->ctrlr, req);
+ nvme_qpair_manual_complete_request(qpair, req,
+ NVME_SCT_GENERIC, NVME_SC_ABORTED_BY_REQUEST);
} else {
/*
* Put the request on the qpair's request queue to be
Index: sys/dev/nvme/nvme_sim.c
===================================================================
--- sys/dev/nvme/nvme_sim.c
+++ sys/dev/nvme/nvme_sim.c
@@ -258,6 +258,10 @@
break;
case XPT_NVME_IO: /* Execute the requested I/O operation */
case XPT_NVME_ADMIN: /* or Admin operation */
+ if (ctrlr->is_failed) {
+ ccb->ccb_h.status = CAM_DEV_NOT_THERE;
+ break;
+ }
nvme_sim_nvmeio(sim, ccb);
return; /* no done */
default:

File Metadata

Mime Type
text/plain
Expires
Mon, Nov 24, 8:35 PM (21 m, 4 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
26074007
Default Alt Text
D31341.id93147.diff (1 KB)

Event Timeline