From 1ad140676ee1efe908a59183fd1f989753a5b0d0 Mon Sep 17 00:00:00 2001 From: yidong0635 Date: Fri, 9 Sep 2022 07:37:54 +0800 Subject: [PATCH] test/aer: Complete requests before detaching. The failed stack: The calling processes: spdk_nvme_detach_async->nvme_ctrlr_detach_async-> nvme_ctrlr_get_ref_count->nvme_ctrlr_proc_put_ref-> nvme_ctrlr_remove_inactive_proc->nvme_ctrlr_get_current_process-> nvme_ctrlr_remove_process The proc->active_reqs list processing steps: spdk_nvme_ctrlr_process_admin_completions-> spdk_nvme_qpair_process_completions-> nvme_transport_qpair_process_completions-> nvme_pcie_qpair_process_completions-> *nvme_pcie_qpair_complete_tracker *nvme_pcie_qpair_insert_pending_admin_request and *nvme_pcie_qpair_complete_pending_admin_request Issue assert: assert(STAILQ_EMPTY(&proc->active_reqs)); The assert means there are outstanding active requests in proc->active_reqs list. According the test app's coding style, it needs to foreach the dev and complete the outstanding commands before spdk_nvme_detach_async especially it launched spdk_nvme_ctrlr_register_aer_callback . Bring the aer tests back, to check it. Fixes issue #2674. Signed-off-by: yidong0635 Change-Id: Ic0d3946f8c8743155cf3067aea1c9b4676748d2f Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14433 Tested-by: SPDK CI Jenkins Reviewed-by: Shuhei Matsumoto Reviewed-by: Changpeng Liu --- test/nvme/aer/aer.c | 4 ++++ test/nvme/nvme.sh | 5 ++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/test/nvme/aer/aer.c b/test/nvme/aer/aer.c index 192730ab3..cda8e892d 100644 --- a/test/nvme/aer/aer.c +++ b/test/nvme/aer/aer.c @@ -702,6 +702,10 @@ main(int argc, char **argv) spdk_nvme_ctrlr_register_aer_callback(dev->ctrlr, NULL, NULL); } + foreach_dev(dev) { + spdk_nvme_ctrlr_process_admin_completions(dev->ctrlr); + } + foreach_dev(dev) { spdk_nvme_detach_async(dev->ctrlr, &detach_ctx); } diff --git a/test/nvme/nvme.sh b/test/nvme/nvme.sh index a003dcc53..eda3a9025 100755 --- a/test/nvme/nvme.sh +++ b/test/nvme/nvme.sh @@ -133,11 +133,10 @@ run_test "nvme_reserve" $testdir/reserve/reserve run_test "nvme_err_injection" $testdir/err_injection/err_injection run_test "nvme_overhead" $testdir/overhead/overhead -s 4096 -t 1 -H -i 0 run_test "nvme_arbitration" $SPDK_EXAMPLE_DIR/arbitration -t 3 -i 0 -# Disabling AEN tests for now due to issue #2674 -#run_test "nvme_single_aen" $testdir/aer/aer -T -i 0 -L log +run_test "nvme_single_aen" $testdir/aer/aer -T -i 0 -L log if [ $(uname) != "FreeBSD" ]; then - #run_test "nvme_multi_aen" $testdir/aer/aer -m -T -i 0 -L log + run_test "nvme_multi_aen" $testdir/aer/aer -m -T -i 0 -L log run_test "nvme_startup" $testdir/startup/startup -t 1000000 run_test "nvme_multi_secondary" nvme_multi_secondary trap - SIGINT SIGTERM EXIT