diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index 9586ef3f2..d7b61e9a1 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -3933,7 +3933,10 @@ spdk_bdev_close(struct spdk_bdev_desc *desc) SPDK_DEBUGLOG(SPDK_LOG_BDEV, "Closing descriptor %p for bdev %s on thread %p\n", desc, bdev->name, spdk_get_thread()); - assert(desc->thread == spdk_get_thread()); + if (desc->thread != spdk_get_thread()) { + SPDK_ERRLOG("Descriptor %p for bdev %s closed on wrong thread (%p, expected %p)\n", + desc, bdev->name, spdk_get_thread(), desc->thread); + } pthread_mutex_lock(&bdev->internal.mutex); diff --git a/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c b/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c index 5123cb8bf..0766af688 100644 --- a/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c +++ b/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c @@ -361,7 +361,7 @@ unregister_and_close(void) /* Try hotremoving a bdev with descriptors which don't provide * the notification callback */ spdk_bdev_open(&g_bdev.bdev, true, NULL, NULL, &desc); - CU_ASSERT(desc != NULL); + SPDK_CU_ASSERT_FATAL(desc != NULL); /* There is an open descriptor on the device. Unregister it, * which can't proceed until the descriptor is closed. */ @@ -387,8 +387,8 @@ unregister_and_close(void) remove_notify = false; spdk_bdev_open(&g_bdev.bdev, true, _bdev_removed, &remove_notify, &desc); + SPDK_CU_ASSERT_FATAL(desc != NULL); CU_ASSERT(remove_notify == false); - CU_ASSERT(desc != NULL); /* There is an open descriptor on the device. Unregister it, * which can't proceed until the descriptor is closed. */