Page MenuHomeFreeBSD

D51391.diff
No OneTemporary

D51391.diff

diff --git a/sys/dev/nvme/nvme.c b/sys/dev/nvme/nvme.c
--- a/sys/dev/nvme/nvme.c
+++ b/sys/dev/nvme/nvme.c
@@ -208,11 +208,10 @@
}
void
-nvme_notify_fail_consumers(struct nvme_controller *ctrlr)
+nvme_notify_fail(struct nvme_controller *ctrlr)
{
- struct nvme_consumer *cons;
- void *ctrlr_cookie;
- uint32_t i;
+ device_t *children;
+ int n_children;
/*
* This controller failed during initialization (i.e. IDENTIFY
@@ -223,15 +222,13 @@
if (!ctrlr->is_initialized)
return;
- for (i = 0; i < NVME_MAX_CONSUMERS; i++) {
- cons = &nvme_consumer[i];
- if (cons->id != INVALID_CONSUMER_ID &&
- (ctrlr_cookie = ctrlr->cons_cookie[i]) != NULL) {
- ctrlr->cons_cookie[i] = NULL;
- if (cons->fail_fn != NULL)
- cons->fail_fn(ctrlr_cookie);
- }
- }
+ if (device_get_children(ctrlr->dev, &children, &n_children) != 0)
+ return;
+
+ for (int i = 0; i < n_children; i++)
+ NVME_CONTROLLER_FAILED(children[i]);
+
+ free(children, M_TEMP);
}
struct nvme_consumer *
diff --git a/sys/dev/nvme/nvme_ctrlr.c b/sys/dev/nvme/nvme_ctrlr.c
--- a/sys/dev/nvme/nvme_ctrlr.c
+++ b/sys/dev/nvme/nvme_ctrlr.c
@@ -256,7 +256,7 @@
nvme_qpair_fail(&ctrlr->ioq[i]);
}
}
- nvme_notify_fail_consumers(ctrlr);
+ nvme_notify_fail(ctrlr);
}
/*
@@ -1723,7 +1723,7 @@
if (gone)
nvme_ctrlr_fail(ctrlr, true);
else
- nvme_notify_fail_consumers(ctrlr);
+ nvme_notify_fail(ctrlr);
for (i = 0; i < NVME_MAX_NAMESPACES; i++)
nvme_ns_destruct(&ctrlr->ns[i]);
diff --git a/sys/dev/nvme/nvme_private.h b/sys/dev/nvme/nvme_private.h
--- a/sys/dev/nvme/nvme_private.h
+++ b/sys/dev/nvme/nvme_private.h
@@ -560,7 +560,7 @@
const struct nvme_completion *async_cpl,
uint32_t log_page_id, void *log_page_buffer,
uint32_t log_page_size);
-void nvme_notify_fail_consumers(struct nvme_controller *ctrlr);
+void nvme_notify_fail(struct nvme_controller *ctrlr);
void nvme_ctrlr_shared_handler(void *arg);
void nvme_ctrlr_poll(struct nvme_controller *ctrlr);

File Metadata

Mime Type
text/plain
Expires
Sat, Feb 28, 5:58 AM (16 h, 6 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29055424
Default Alt Text
D51391.diff (1 KB)

Event Timeline