diff --git a/test/app/fuzz/nvme_fuzz/nvme_fuzz.c b/test/app/fuzz/nvme_fuzz/nvme_fuzz.c index 127bc1bff..b068cb905 100644 --- a/test/app/fuzz/nvme_fuzz/nvme_fuzz.c +++ b/test/app/fuzz/nvme_fuzz/nvme_fuzz.c @@ -537,12 +537,17 @@ static void free_controllers(void) { struct nvme_fuzz_ctrlr *ctrlr, *tmp; + struct spdk_nvme_detach_ctx *detach_ctx = NULL; TAILQ_FOREACH_SAFE(ctrlr, &g_ctrlr_list, tailq, tmp) { TAILQ_REMOVE(&g_ctrlr_list, ctrlr, tailq); - spdk_nvme_detach(ctrlr->ctrlr); + spdk_nvme_detach_async(ctrlr->ctrlr, &detach_ctx); free(ctrlr); } + + while (detach_ctx && spdk_nvme_detach_poll_async(detach_ctx) == -EAGAIN) { + ; + } } static void diff --git a/test/app/stub/stub.c b/test/app/stub/stub.c index 95d55379a..22d377903 100644 --- a/test/app/stub/stub.c +++ b/test/app/stub/stub.c @@ -52,12 +52,17 @@ static void cleanup(void) { struct ctrlr_entry *ctrlr_entry, *tmp; + struct spdk_nvme_detach_ctx *detach_ctx = NULL; TAILQ_FOREACH_SAFE(ctrlr_entry, &g_controllers, link, tmp) { TAILQ_REMOVE(&g_controllers, ctrlr_entry, link); - spdk_nvme_detach(ctrlr_entry->ctrlr); + spdk_nvme_detach_async(ctrlr_entry->ctrlr, &detach_ctx); free(ctrlr_entry); } + + while (detach_ctx && spdk_nvme_detach_poll_async(detach_ctx) == -EAGAIN) { + ; + } } static void