diff --git a/lib/nvmf/subsystem.c b/lib/nvmf/subsystem.c index 0729f4a871..c5e544be8d 100644 --- a/lib/nvmf/subsystem.c +++ b/lib/nvmf/subsystem.c @@ -171,6 +171,15 @@ spdk_nvmf_subsystem_delete_done(void *io_device, void *ctx, int status) { struct spdk_nvmf_tgt *tgt = io_device; struct spdk_nvmf_subsystem *subsystem = ctx; + struct spdk_nvmf_ns *ns; + + for (ns = spdk_nvmf_subsystem_get_first_ns(subsystem); ns != NULL; + ns = spdk_nvmf_subsystem_get_next_ns(subsystem, ns)) { + if (ns->bdev == NULL) { + continue; + } + spdk_bdev_close(ns->desc); + } free(subsystem->ns); diff --git a/test/unit/lib/nvmf/ctrlr_discovery.c/ctrlr_discovery_ut.c b/test/unit/lib/nvmf/ctrlr_discovery.c/ctrlr_discovery_ut.c index ab794bbd31..8e49d947f5 100644 --- a/test/unit/lib/nvmf/ctrlr_discovery.c/ctrlr_discovery_ut.c +++ b/test/unit/lib/nvmf/ctrlr_discovery.c/ctrlr_discovery_ut.c @@ -46,6 +46,11 @@ spdk_bdev_open(struct spdk_bdev *bdev, bool write, spdk_bdev_remove_cb_t remove_ return 0; } +void +spdk_bdev_close(struct spdk_bdev_desc *desc) +{ +} + const char * spdk_bdev_get_name(const struct spdk_bdev *bdev) { diff --git a/test/unit/lib/nvmf/subsystem.c/subsystem_ut.c b/test/unit/lib/nvmf/subsystem.c/subsystem_ut.c index b1291faa99..316a3bbe16 100644 --- a/test/unit/lib/nvmf/subsystem.c/subsystem_ut.c +++ b/test/unit/lib/nvmf/subsystem.c/subsystem_ut.c @@ -160,6 +160,11 @@ spdk_bdev_open(struct spdk_bdev *bdev, bool write, spdk_bdev_remove_cb_t remove_ return 0; } +void +spdk_bdev_close(struct spdk_bdev_desc *desc) +{ +} + const char * spdk_bdev_get_name(const struct spdk_bdev *bdev) {