From 7a85c283d995a1e960bd35f37a9fb478431cfb1f Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Fri, 16 Oct 2020 08:57:12 +0900 Subject: [PATCH] test/app: Use spdk_nvme_detach_async() and spdk_nvme_detach_poll_async() Use spdk_nvme_detach_async() and spdk_nvme_detach_poll_async() with a local variable detach_ctx to detach multiple controllers. Signed-off-by: Shuhei Matsumoto Change-Id: I43428a41df2b6f26b62cf03990d35add9a3663d6 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4440 Reviewed-by: Aleksey Marchuk Reviewed-by: Jim Harris Tested-by: SPDK CI Jenkins --- test/app/fuzz/nvme_fuzz/nvme_fuzz.c | 7 ++++++- test/app/stub/stub.c | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) 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