unittest/nvme: initialize mutex for portability
For correct behaviour, pthread_mutex must be initialized before use and destroyed before the memory is zeroed. Add mutex initialization and destroy calls to test_nvme_init_controllers. Tested with a pthreads library that contains debugging code to check the mutex state. Signed-off-by: Nick Connolly <nick.connolly@mayadata.io> Change-Id: I9a0509bee176940e1aa46bd5de4c6ad396b787e1 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6152 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
b6748a41eb
commit
ed1dcc1c50
@ -372,6 +372,7 @@ test_nvme_init_controllers(void)
|
|||||||
SPDK_CU_ASSERT_FATAL(ctrlr != NULL);
|
SPDK_CU_ASSERT_FATAL(ctrlr != NULL);
|
||||||
ctrlr->trid.trtype = SPDK_NVME_TRANSPORT_PCIE;
|
ctrlr->trid.trtype = SPDK_NVME_TRANSPORT_PCIE;
|
||||||
CU_ASSERT(pthread_mutexattr_init(&attr) == 0);
|
CU_ASSERT(pthread_mutexattr_init(&attr) == 0);
|
||||||
|
CU_ASSERT(pthread_mutex_init(&ctrlr->ctrlr_lock, &attr) == 0);
|
||||||
CU_ASSERT(pthread_mutex_init(&test_driver.lock, &attr) == 0);
|
CU_ASSERT(pthread_mutex_init(&test_driver.lock, &attr) == 0);
|
||||||
TAILQ_INIT(&test_driver.shared_attached_ctrlrs);
|
TAILQ_INIT(&test_driver.shared_attached_ctrlrs);
|
||||||
|
|
||||||
@ -409,10 +410,16 @@ test_nvme_init_controllers(void)
|
|||||||
CU_ASSERT(TAILQ_FIRST(&g_spdk_nvme_driver->shared_attached_ctrlrs) == ctrlr);
|
CU_ASSERT(TAILQ_FIRST(&g_spdk_nvme_driver->shared_attached_ctrlrs) == ctrlr);
|
||||||
TAILQ_REMOVE(&g_spdk_nvme_driver->shared_attached_ctrlrs, ctrlr, tailq);
|
TAILQ_REMOVE(&g_spdk_nvme_driver->shared_attached_ctrlrs, ctrlr, tailq);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reset to initial state
|
||||||
|
*/
|
||||||
|
CU_ASSERT(pthread_mutex_destroy(&ctrlr->ctrlr_lock) == 0);
|
||||||
|
memset(ctrlr, 0, sizeof(struct spdk_nvme_ctrlr));
|
||||||
|
CU_ASSERT(pthread_mutex_init(&ctrlr->ctrlr_lock, &attr) == 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Non-PCIe controllers should be added to the per-process list, not the shared list.
|
* Non-PCIe controllers should be added to the per-process list, not the shared list.
|
||||||
*/
|
*/
|
||||||
memset(ctrlr, 0, sizeof(struct spdk_nvme_ctrlr));
|
|
||||||
ctrlr->trid.trtype = SPDK_NVME_TRANSPORT_RDMA;
|
ctrlr->trid.trtype = SPDK_NVME_TRANSPORT_RDMA;
|
||||||
probe_ctx = test_nvme_init_get_probe_ctx();
|
probe_ctx = test_nvme_init_get_probe_ctx();
|
||||||
TAILQ_INSERT_TAIL(&probe_ctx->init_ctrlrs, ctrlr, tailq);
|
TAILQ_INSERT_TAIL(&probe_ctx->init_ctrlrs, ctrlr, tailq);
|
||||||
@ -424,6 +431,7 @@ test_nvme_init_controllers(void)
|
|||||||
CU_ASSERT(TAILQ_EMPTY(&g_spdk_nvme_driver->shared_attached_ctrlrs));
|
CU_ASSERT(TAILQ_EMPTY(&g_spdk_nvme_driver->shared_attached_ctrlrs));
|
||||||
CU_ASSERT(TAILQ_FIRST(&g_nvme_attached_ctrlrs) == ctrlr);
|
CU_ASSERT(TAILQ_FIRST(&g_nvme_attached_ctrlrs) == ctrlr);
|
||||||
TAILQ_REMOVE(&g_nvme_attached_ctrlrs, ctrlr, tailq);
|
TAILQ_REMOVE(&g_nvme_attached_ctrlrs, ctrlr, tailq);
|
||||||
|
CU_ASSERT(pthread_mutex_destroy(&ctrlr->ctrlr_lock) == 0);
|
||||||
free(ctrlr);
|
free(ctrlr);
|
||||||
CU_ASSERT(TAILQ_EMPTY(&g_nvme_attached_ctrlrs));
|
CU_ASSERT(TAILQ_EMPTY(&g_nvme_attached_ctrlrs));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user