Lines Matching defs:ns
21 static int nvme_ctrlr_identify_ns_async(struct spdk_nvme_ns *ns);
22 static int nvme_ctrlr_identify_ns_iocs_specific_async(struct spdk_nvme_ns *ns);
23 static int nvme_ctrlr_identify_id_desc_async(struct spdk_nvme_ns *ns);
821 struct spdk_nvme_ns *ns;
830 ns = spdk_nvme_ctrlr_get_ns(ctrlr, nsid);
831 assert(ns != NULL);
833 ns->ana_group_id = desc->ana_group_id;
834 ns->ana_state = desc->ana_state;
1478 return "identify active ns";
1480 return "wait for identify active ns";
1482 return "identify ns";
1484 return "wait for identify ns";
1490 return "identify ns iocs specific";
1492 return "wait for identify ns iocs specific";
1821 struct spdk_nvme_ns *ns, *tmp_ns;
1869 RB_FOREACH_SAFE(ns, nvme_ns_tree, &ctrlr->ns, tmp_ns) {
1870 if (!ns->active) {
1871 RB_REMOVE(nvme_ns_tree, &ctrlr->ns, ns);
1872 spdk_free(ns);
2351 struct spdk_nvme_ns tmp, *ns;
2356 ns = RB_FIND(nvme_ns_tree, &ctrlr->ns, &tmp);
2357 if (ns == NULL) {
2361 nvme_ns_destruct(ns);
2362 ns->active = false;
2370 struct spdk_nvme_ns *ns;
2377 ns = spdk_nvme_ctrlr_get_ns(ctrlr, nsid);
2378 if (ns == NULL) {
2382 ns->active = true;
2394 struct spdk_nvme_ns *ns, *tmp_ns;
2398 RB_FOREACH_SAFE(ns, nvme_ns_tree, &ctrlr->ns, tmp_ns) {
2402 if (nsid == ns->id) {
2409 if (nsid != ns->id) {
2411 NVME_CTRLR_DEBUGLOG(ctrlr, "Namespace %u was removed\n", ns->id);
2412 nvme_ctrlr_destruct_namespace(ctrlr, ns->id);
2492 * If controller doesn't support active ns list CNS 0x02 dummy up
2493 * an active ns list, i.e. all namespaces report as active
2544 struct spdk_nvme_ns *ns;
2554 RB_FOREACH(ns, nvme_ns_tree, &ctrlr->ns) {
2555 nvme_ns_free_iocs_specific_data(ns);
2614 struct spdk_nvme_ns *ns = (struct spdk_nvme_ns *)arg;
2615 struct spdk_nvme_ctrlr *ctrlr = ns->ctrlr;
2624 nvme_ns_set_identify_data(ns);
2627 nsid = spdk_nvme_ctrlr_get_next_active_ns(ctrlr, ns->id);
2628 ns = spdk_nvme_ctrlr_get_ns(ctrlr, nsid);
2629 if (ns == NULL) {
2634 ns->ctrlr = ctrlr;
2635 ns->id = nsid;
2637 rc = nvme_ctrlr_identify_ns_async(ns);
2644 nvme_ctrlr_identify_ns_async(struct spdk_nvme_ns *ns)
2646 struct spdk_nvme_ctrlr *ctrlr = ns->ctrlr;
2649 nsdata = &ns->nsdata;
2653 return nvme_ctrlr_cmd_identify(ns->ctrlr, SPDK_NVME_IDENTIFY_NS, 0, ns->id, 0,
2655 nvme_ctrlr_identify_ns_async_done, ns);
2662 struct spdk_nvme_ns *ns;
2666 ns = spdk_nvme_ctrlr_get_ns(ctrlr, nsid);
2667 if (ns == NULL) {
2674 ns->ctrlr = ctrlr;
2675 ns->id = nsid;
2677 rc = nvme_ctrlr_identify_ns_async(ns);
2689 struct spdk_nvme_ns *ns;
2699 ns = spdk_nvme_ctrlr_get_ns(ctrlr, nsid);
2700 if (ns == NULL) {
2707 /* loop until we find a ns which has (supported) iocs specific data */
2708 while (!nvme_ns_has_supported_iocs_specific_data(ns)) {
2709 nsid = spdk_nvme_ctrlr_get_next_active_ns(ctrlr, ns->id);
2710 ns = spdk_nvme_ctrlr_get_ns(ctrlr, nsid);
2711 if (ns == NULL) {
2719 rc = nvme_ctrlr_identify_ns_iocs_specific_async(ns);
2730 struct spdk_nvme_ns *ns = (struct spdk_nvme_ns *)arg;
2731 struct spdk_nvme_ctrlr *ctrlr = ns->ctrlr;
2734 nvme_ns_free_zns_specific_data(ns);
2739 nvme_ctrlr_identify_namespaces_iocs_specific_next(ctrlr, ns->id);
2743 nvme_ctrlr_identify_ns_zns_specific_async(struct spdk_nvme_ns *ns)
2745 struct spdk_nvme_ctrlr *ctrlr = ns->ctrlr;
2748 assert(!ns->nsdata_zns);
2749 ns->nsdata_zns = spdk_zmalloc(sizeof(*ns->nsdata_zns), 64, NULL, SPDK_ENV_NUMA_ID_ANY,
2751 if (!ns->nsdata_zns) {
2757 rc = nvme_ctrlr_cmd_identify(ns->ctrlr, SPDK_NVME_IDENTIFY_NS_IOCS, 0, ns->id, ns->csi,
2758 ns->nsdata_zns, sizeof(*ns->nsdata_zns),
2759 nvme_ctrlr_identify_ns_zns_specific_async_done, ns);
2761 nvme_ns_free_zns_specific_data(ns);
2770 struct spdk_nvme_ns *ns = (struct spdk_nvme_ns *)arg;
2771 struct spdk_nvme_ctrlr *ctrlr = ns->ctrlr;
2774 nvme_ns_free_nvm_specific_data(ns);
2779 nvme_ctrlr_identify_namespaces_iocs_specific_next(ctrlr, ns->id);
2783 nvme_ctrlr_identify_ns_nvm_specific_async(struct spdk_nvme_ns *ns)
2785 struct spdk_nvme_ctrlr *ctrlr = ns->ctrlr;
2788 assert(!ns->nsdata_nvm);
2789 ns->nsdata_nvm = spdk_zmalloc(sizeof(*ns->nsdata_nvm), 64, NULL, SPDK_ENV_NUMA_ID_ANY,
2791 if (!ns->nsdata_nvm) {
2797 rc = nvme_ctrlr_cmd_identify(ns->ctrlr, SPDK_NVME_IDENTIFY_NS_IOCS, 0, ns->id, ns->csi,
2798 ns->nsdata_nvm, sizeof(*ns->nsdata_nvm),
2799 nvme_ctrlr_identify_ns_nvm_specific_async_done, ns);
2801 nvme_ns_free_nvm_specific_data(ns);
2808 nvme_ctrlr_identify_ns_iocs_specific_async(struct spdk_nvme_ns *ns)
2810 switch (ns->csi) {
2812 return nvme_ctrlr_identify_ns_zns_specific_async(ns);
2814 if (ns->ctrlr->cdata.ctratt.bits.elbas) {
2815 return nvme_ctrlr_identify_ns_nvm_specific_async(ns);
2846 struct spdk_nvme_ns *ns = (struct spdk_nvme_ns *)arg;
2847 struct spdk_nvme_ctrlr *ctrlr = ns->ctrlr;
2869 nvme_ns_set_id_desc_list_data(ns);
2872 nsid = spdk_nvme_ctrlr_get_next_active_ns(ctrlr, ns->id);
2873 ns = spdk_nvme_ctrlr_get_ns(ctrlr, nsid);
2874 if (ns == NULL) {
2880 rc = nvme_ctrlr_identify_id_desc_async(ns);
2887 nvme_ctrlr_identify_id_desc_async(struct spdk_nvme_ns *ns)
2889 struct spdk_nvme_ctrlr *ctrlr = ns->ctrlr;
2891 memset(ns->id_desc_list, 0, sizeof(ns->id_desc_list));
2895 return nvme_ctrlr_cmd_identify(ns->ctrlr, SPDK_NVME_IDENTIFY_NS_ID_DESCRIPTOR_LIST,
2896 0, ns->id, 0, ns->id_desc_list, sizeof(ns->id_desc_list),
2897 nvme_ctrlr_identify_id_desc_async_done, ns);
2904 struct spdk_nvme_ns *ns;
2918 ns = spdk_nvme_ctrlr_get_ns(ctrlr, nsid);
2919 if (ns == NULL) {
2926 rc = nvme_ctrlr_identify_id_desc_async(ns);
3188 struct spdk_nvme_ns *ns;
3192 ns = spdk_nvme_ctrlr_get_ns(ctrlr, nsid);
3193 nvme_ns_construct(ns, nsid, ctrlr);
3213 "changed ns log.\n");
3249 NVME_CTRLR_WARNLOG(ctrlr, "changed ns log overflowed.\n");
4341 RB_INIT(&ctrlr->ns);
4423 struct spdk_nvme_ns *ns, *tmp_ns;
4440 RB_FOREACH_SAFE(ns, nvme_ns_tree, &ctrlr->ns, tmp_ns) {
4441 nvme_ctrlr_destruct_namespace(ctrlr, ns->id);
4442 RB_REMOVE(nvme_ns_tree, &ctrlr->ns, ns);
4443 spdk_free(ns);
4657 struct spdk_nvme_ns tmp, *ns;
4660 ns = RB_FIND(nvme_ns_tree, &ctrlr->ns, &tmp);
4662 if (ns != NULL) {
4663 return ns->active;
4672 struct spdk_nvme_ns *ns;
4674 ns = RB_MIN(nvme_ns_tree, &ctrlr->ns);
4675 if (ns == NULL) {
4679 while (ns != NULL) {
4680 if (ns->active) {
4681 return ns->id;
4684 ns = RB_NEXT(nvme_ns_tree, &ctrlr->ns, ns);
4693 struct spdk_nvme_ns tmp, *ns;
4696 ns = RB_FIND(nvme_ns_tree, &ctrlr->ns, &tmp);
4697 if (ns == NULL) {
4701 ns = RB_NEXT(nvme_ns_tree, &ctrlr->ns, ns);
4702 while (ns != NULL) {
4703 if (ns->active) {
4704 return ns->id;
4707 ns = RB_NEXT(nvme_ns_tree, &ctrlr->ns, ns);
4717 struct spdk_nvme_ns *ns;
4726 ns = RB_FIND(nvme_ns_tree, &ctrlr->ns, &tmp);
4728 if (ns == NULL) {
4729 ns = spdk_zmalloc(sizeof(struct spdk_nvme_ns), 64, NULL, SPDK_ENV_NUMA_ID_ANY, SPDK_MALLOC_SHARE);
4730 if (ns == NULL) {
4736 ns->id = nsid;
4737 RB_INSERT(nvme_ns_tree, &ctrlr->ns, ns);
4742 return ns;
4858 struct spdk_nvme_ns *ns;
4891 ns = spdk_nvme_ctrlr_get_ns(ctrlr, nsid);
4892 if (ns == NULL) {
4897 return nvme_ns_construct(ns, nsid, ctrlr);