Page MenuHomeFreeBSD

D19781.diff
No OneTemporary

D19781.diff

Index: head/sys/dev/nvme/nvme_ctrlr.c
===================================================================
--- head/sys/dev/nvme/nvme_ctrlr.c
+++ head/sys/dev/nvme/nvme_ctrlr.c
@@ -515,28 +515,33 @@
}
static int
-nvme_ctrlr_destroy_qpair(struct nvme_controller *ctrlr, struct nvme_qpair *qpair)
+nvme_ctrlr_destroy_qpairs(struct nvme_controller *ctrlr)
{
struct nvme_completion_poll_status status;
+ struct nvme_qpair *qpair;
- status.done = 0;
- nvme_ctrlr_cmd_delete_io_sq(ctrlr, qpair,
- nvme_completion_poll_cb, &status);
- while (!atomic_load_acq_int(&status.done))
- pause("nvme", 1);
- if (nvme_completion_is_error(&status.cpl)) {
- nvme_printf(ctrlr, "nvme_destroy_io_sq failed!\n");
- return (ENXIO);
- }
+ for (int i = 0; i < ctrlr->num_io_queues; i++) {
+ qpair = &ctrlr->ioq[i];
- status.done = 0;
- nvme_ctrlr_cmd_delete_io_cq(ctrlr, qpair,
- nvme_completion_poll_cb, &status);
- while (!atomic_load_acq_int(&status.done))
- pause("nvme", 1);
- if (nvme_completion_is_error(&status.cpl)) {
- nvme_printf(ctrlr, "nvme_destroy_io_cq failed!\n");
- return (ENXIO);
+ status.done = 0;
+ nvme_ctrlr_cmd_delete_io_sq(ctrlr, qpair,
+ nvme_completion_poll_cb, &status);
+ while (!atomic_load_acq_int(&status.done))
+ pause("nvme", 1);
+ if (nvme_completion_is_error(&status.cpl)) {
+ nvme_printf(ctrlr, "nvme_destroy_io_sq failed!\n");
+ return (ENXIO);
+ }
+
+ status.done = 0;
+ nvme_ctrlr_cmd_delete_io_cq(ctrlr, qpair,
+ nvme_completion_poll_cb, &status);
+ while (!atomic_load_acq_int(&status.done))
+ pause("nvme", 1);
+ if (nvme_completion_is_error(&status.cpl)) {
+ nvme_printf(ctrlr, "nvme_destroy_io_cq failed!\n");
+ return (ENXIO);
+ }
}
return (0);
@@ -1314,8 +1319,8 @@
if (ctrlr->cdev)
destroy_dev(ctrlr->cdev);
+ nvme_ctrlr_destroy_qpairs(ctrlr);
for (i = 0; i < ctrlr->num_io_queues; i++) {
- nvme_ctrlr_destroy_qpair(ctrlr, &ctrlr->ioq[i]);
nvme_io_qpair_destroy(&ctrlr->ioq[i]);
}
free(ctrlr->ioq, M_NVME);

File Metadata

Mime Type
text/plain
Expires
Mon, Jan 19, 6:00 AM (13 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27733257
Default Alt Text
D19781.diff (1 KB)

Event Timeline