Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 7 additions & 8 deletions libnvme/src/nvme/tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -632,11 +632,18 @@ nvme_path_t nvme_namespace_next_path(nvme_ns_t ns, nvme_path_t p)

static void __nvme_free_ns(struct nvme_ns *n)
{
struct nvme_path *p, *_p;

list_del_init(&n->entry);
nvme_ns_release_transport_handle(n);
free(n->generic_name);
free(n->name);
free(n->sysfs_dir);
nvme_namespace_for_each_path_safe(n, p, _p) {
list_del_init(&p->nentry);
p->n = NULL;
}
list_head_init(&n->head->paths);
free(n->head->sysfs_dir);
free(n->head);
free(n);
Expand Down Expand Up @@ -3001,16 +3008,8 @@ static int nvme_subsystem_scan_namespace(struct nvme_global_ctx *ctx, nvme_subsy
return ret;
}
nvme_subsystem_for_each_ns_safe(s, _n, __n) {
struct nvme_path *p, *_p;

if (strcmp(n->name, _n->name))
continue;
/* Detach paths */
nvme_namespace_for_each_path_safe(_n, p, _p) {
list_del_init(&p->nentry);
p->n = NULL;
}
list_head_init(&_n->head->paths);
__nvme_free_ns(_n);
}
n->s = s;
Expand Down