Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/nvme/nvme.c
Show First 20 Lines • Show All 288 Lines • ▼ Show 20 Lines | nvme_notify_ns(struct nvme_controller *ctrlr, int nsid) | ||||
KASSERT(nsid <= NVME_MAX_NAMESPACES, | KASSERT(nsid <= NVME_MAX_NAMESPACES, | ||||
("%s: Namespace notification to nsid %d exceeds range\n", | ("%s: Namespace notification to nsid %d exceeds range\n", | ||||
device_get_nameunit(ctrlr->dev), nsid)); | device_get_nameunit(ctrlr->dev), nsid)); | ||||
if (!ctrlr->is_initialized) | if (!ctrlr->is_initialized) | ||||
return; | return; | ||||
ns = &ctrlr->ns[nsid - 1]; | ns = &ctrlr->ns[nsid - 1]; | ||||
nvme_ns_construct(ns, nsid, ctrlr, NVME_REASON_FLAGGED); | |||||
for (i = 0; i < NVME_MAX_CONSUMERS; i++) { | for (i = 0; i < NVME_MAX_CONSUMERS; i++) { | ||||
cons = &nvme_consumer[i]; | cons = &nvme_consumer[i]; | ||||
if (cons->id != INVALID_CONSUMER_ID && cons->ns_fn != NULL && | if (cons->id != INVALID_CONSUMER_ID && cons->ns_fn != NULL && | ||||
(ctrlr_cookie = ctrlr->cons_cookie[i]) != NULL) | (ctrlr_cookie = ctrlr->cons_cookie[i]) != NULL) | ||||
ns->cons_cookie[i] = (*cons->ns_fn)(ns, ctrlr_cookie); | ns->cons_cookie[i] = (*cons->ns_fn)(ns, ctrlr_cookie); | ||||
} | } | ||||
ns->flags &= ~NVME_NS_FLAG_CHANGED; | |||||
} | } | ||||
struct nvme_consumer * | struct nvme_consumer * | ||||
nvme_register_consumer(nvme_cons_ns_fn_t ns_fn, nvme_cons_ctrlr_fn_t ctrlr_fn, | nvme_register_consumer(nvme_cons_ns_fn_t ns_fn, nvme_cons_ctrlr_fn_t ctrlr_fn, | ||||
nvme_cons_async_fn_t async_fn, | nvme_cons_async_fn_t async_fn, | ||||
nvme_cons_fail_fn_t fail_fn) | nvme_cons_fail_fn_t fail_fn) | ||||
{ | { | ||||
int i; | int i; | ||||
▲ Show 20 Lines • Show All 56 Lines • Show Last 20 Lines |