diff options
author | jimharris <jimharris@FreeBSD.org> | 2013-08-13 21:49:32 +0000 |
---|---|---|
committer | jimharris <jimharris@FreeBSD.org> | 2013-08-13 21:49:32 +0000 |
commit | 53b17a5f067e85c56391dbc150dd702d29ea4c8d (patch) | |
tree | 518c7ba530ed6cf315e858bf6d1ee14df0a8de49 /sys/dev/nvme | |
parent | 3f846da35adcf59806a7022f25cc733b0feaa4a3 (diff) | |
download | FreeBSD-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.c | 9 |
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) |