test/bdev/mt free unregistered bdevs after polling.

This unit test operated under the assumption that one could immediately
free a bdev after calling spdk_bdev_unregister. This assumption is
broken when we moved the actual destroy call to an asynchronous callback
to spdk_io_device_unregister.

Change-Id: I92d34f7e2e2993bfe9391f9bb72e08128dec74f4
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/406429
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Seth Howell 2018-04-04 09:23:34 -07:00 committed by Jim Harris
parent ecd5f65138
commit ce6a7cd8b8

View File

@ -221,7 +221,6 @@ unregister_bdev(struct ut_bdev *ut_bdev)
/* Handle any deferred messages. */ /* Handle any deferred messages. */
poll_threads(); poll_threads();
spdk_bdev_unregister(&ut_bdev->bdev, NULL, NULL); spdk_bdev_unregister(&ut_bdev->bdev, NULL, NULL);
memset(ut_bdev, 0, sizeof(*ut_bdev));
} }
static void static void
@ -260,6 +259,7 @@ teardown_test(void)
spdk_io_device_unregister(&g_io_device, NULL); spdk_io_device_unregister(&g_io_device, NULL);
spdk_bdev_finish(finish_cb, NULL); spdk_bdev_finish(finish_cb, NULL);
poll_threads(); poll_threads();
memset(&g_bdev, 0, sizeof(g_bdev));
CU_ASSERT(g_teardown_done == true); CU_ASSERT(g_teardown_done == true);
g_teardown_done = false; g_teardown_done = false;
free_threads(); free_threads();
@ -1218,8 +1218,8 @@ enomem_multi_bdev(void)
spdk_put_io_channel(second_ch); spdk_put_io_channel(second_ch);
spdk_bdev_close(second_desc); spdk_bdev_close(second_desc);
unregister_bdev(second_bdev); unregister_bdev(second_bdev);
free(second_bdev);
poll_threads(); poll_threads();
free(second_bdev);
teardown_test(); teardown_test();
} }