summaryrefslogtreecommitdiffstats
path: root/sys/dev/nvme
diff options
context:
space:
mode:
authorjimharris <jimharris@FreeBSD.org>2013-08-13 21:49:32 +0000
committerjimharris <jimharris@FreeBSD.org>2013-08-13 21:49:32 +0000
commit53b17a5f067e85c56391dbc150dd702d29ea4c8d (patch)
tree518c7ba530ed6cf315e858bf6d1ee14df0a8de49 /sys/dev/nvme
parent3f846da35adcf59806a7022f25cc733b0feaa4a3 (diff)
downloadFreeBSD-src-53b17a5f067e85c56391dbc150dd702d29ea4c8d.zip
FreeBSD-src-53b17a5f067e85c56391dbc150dd702d29ea4c8d.tar.gz
If a controller fails to initialize, do not notify consumers (nvd) of its
namespaces. Sponsoredy by: Intel Reviewed by: carl MFC after: 3 days
Diffstat (limited to 'sys/dev/nvme')
-rw-r--r--sys/dev/nvme/nvme.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/dev/nvme/nvme.c b/sys/dev/nvme/nvme.c
index 2e598e8..ec8d592 100644
--- a/sys/dev/nvme/nvme.c
+++ b/sys/dev/nvme/nvme.c
@@ -278,6 +278,15 @@ nvme_notify_consumer(struct nvme_consumer *cons)
else
ctrlr_cookie = NULL;
ctrlr->cons_cookie[cons->id] = ctrlr_cookie;
+ if (ctrlr->is_failed) {
+ if (cons->fail_fn != NULL)
+ (*cons->fail_fn)(ctrlr_cookie);
+ /*
+ * Do not notify consumers about the namespaces of a
+ * failed controller.
+ */
+ continue;
+ }
for (ns_idx = 0; ns_idx < ctrlr->cdata.nn; ns_idx++) {
ns = &ctrlr->ns[ns_idx];
if (cons->ns_fn != NULL)
OpenPOWER on IntegriCloud