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);
|
||||
ctrlr->trid.trtype = SPDK_NVME_TRANSPORT_PCIE;
|
||||
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);
|
||||
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);
|
||||
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.
|
||||
*/
|
||||
memset(ctrlr, 0, sizeof(struct spdk_nvme_ctrlr));
|
||||
ctrlr->trid.trtype = SPDK_NVME_TRANSPORT_RDMA;
|
||||
probe_ctx = test_nvme_init_get_probe_ctx();
|
||||
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_FIRST(&g_nvme_attached_ctrlrs) == ctrlr);
|
||||
TAILQ_REMOVE(&g_nvme_attached_ctrlrs, ctrlr, tailq);
|
||||
CU_ASSERT(pthread_mutex_destroy(&ctrlr->ctrlr_lock) == 0);
|
||||
free(ctrlr);
|
||||
CU_ASSERT(TAILQ_EMPTY(&g_nvme_attached_ctrlrs));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user