test/nvme_ctrlr_cmd: initialize mutex

For correct behaviour, pthread_mutex must be initialized before use
and destroyed afterwards. Add mutex initialization to
DECLARE_AND_CONSTRUCT_CTRLR and add DECONSTRUCT_CTRLR
to cleanup afterwards.

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: Id1d62e6f76548bd8e259d4d9c4d453a3218b0b1c
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6159
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:
Nick Connolly 2021-01-28 19:09:45 +00:00 committed by Tomasz Zawadzki
parent b34fb47d8c
commit 05aaac9c14

View File

@ -373,7 +373,11 @@ nvme_ctrlr_submit_admin_request(struct spdk_nvme_ctrlr *ctrlr, struct nvme_reque
\
STAILQ_INIT(&adminq.free_req); \
STAILQ_INSERT_HEAD(&adminq.free_req, &req, stailq); \
ctrlr.adminq = &adminq;
ctrlr.adminq = &adminq; \
CU_ASSERT(pthread_mutex_init(&ctrlr.ctrlr_lock, NULL) == 0);
#define DECONSTRUCT_CTRLR() \
CU_ASSERT(pthread_mutex_destroy(&ctrlr.ctrlr_lock) == 0);
static void
test_firmware_get_log_page(void)
@ -386,6 +390,8 @@ test_firmware_get_log_page(void)
spdk_nvme_ctrlr_cmd_get_log_page(&ctrlr, SPDK_NVME_LOG_FIRMWARE_SLOT, SPDK_NVME_GLOBAL_NS_TAG,
&payload,
sizeof(payload), 0, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void
@ -399,6 +405,8 @@ test_health_get_log_page(void)
spdk_nvme_ctrlr_cmd_get_log_page(&ctrlr, SPDK_NVME_LOG_HEALTH_INFORMATION, health_log_nsid,
&payload,
sizeof(payload), 0, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void
@ -415,6 +423,8 @@ test_error_get_log_page(void)
error_num_entries = 1;
spdk_nvme_ctrlr_cmd_get_log_page(&ctrlr, SPDK_NVME_LOG_ERROR, SPDK_NVME_GLOBAL_NS_TAG, &payload,
sizeof(payload), 0, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void test_intel_smart_get_log_page(void)
@ -426,6 +436,8 @@ static void test_intel_smart_get_log_page(void)
spdk_nvme_ctrlr_cmd_get_log_page(&ctrlr, SPDK_NVME_INTEL_LOG_SMART, health_log_nsid, &payload,
sizeof(payload), 0, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void test_intel_temperature_get_log_page(void)
@ -437,6 +449,8 @@ static void test_intel_temperature_get_log_page(void)
spdk_nvme_ctrlr_cmd_get_log_page(&ctrlr, SPDK_NVME_INTEL_LOG_TEMPERATURE, SPDK_NVME_GLOBAL_NS_TAG,
&payload, sizeof(payload), 0, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void test_intel_read_latency_get_log_page(void)
@ -449,6 +463,8 @@ static void test_intel_read_latency_get_log_page(void)
spdk_nvme_ctrlr_cmd_get_log_page(&ctrlr, SPDK_NVME_INTEL_LOG_READ_CMD_LATENCY,
SPDK_NVME_GLOBAL_NS_TAG,
&payload, sizeof(payload), 0, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void test_intel_write_latency_get_log_page(void)
@ -461,6 +477,8 @@ static void test_intel_write_latency_get_log_page(void)
spdk_nvme_ctrlr_cmd_get_log_page(&ctrlr, SPDK_NVME_INTEL_LOG_WRITE_CMD_LATENCY,
SPDK_NVME_GLOBAL_NS_TAG,
&payload, sizeof(payload), 0, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void test_intel_get_log_page_directory(void)
@ -473,6 +491,8 @@ static void test_intel_get_log_page_directory(void)
spdk_nvme_ctrlr_cmd_get_log_page(&ctrlr, SPDK_NVME_INTEL_LOG_PAGE_DIRECTORY,
SPDK_NVME_GLOBAL_NS_TAG,
&payload, sizeof(payload), 0, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void test_intel_marketing_description_get_log_page(void)
@ -485,6 +505,8 @@ static void test_intel_marketing_description_get_log_page(void)
spdk_nvme_ctrlr_cmd_get_log_page(&ctrlr, SPDK_NVME_INTEL_MARKETING_DESCRIPTION,
SPDK_NVME_GLOBAL_NS_TAG,
&payload, sizeof(payload), 0, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void test_generic_get_log_pages(void)
@ -512,6 +534,8 @@ test_set_feature_cmd(void)
verify_fn = verify_set_feature_cmd;
spdk_nvme_ctrlr_cmd_set_feature(&ctrlr, feature, feature_cdw11, feature_cdw12, NULL, 0, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void
@ -524,6 +548,8 @@ test_get_feature_ns_cmd(void)
spdk_nvme_ctrlr_cmd_get_feature_ns(&ctrlr, expected_feature_cdw10,
expected_feature_cdw11, NULL, 0,
NULL, NULL, expected_feature_ns);
DECONSTRUCT_CTRLR();
}
static void
@ -536,6 +562,8 @@ test_set_feature_ns_cmd(void)
spdk_nvme_ctrlr_cmd_set_feature_ns(&ctrlr, expected_feature_cdw10,
expected_feature_cdw11, expected_feature_cdw12,
NULL, 0, NULL, NULL, expected_feature_ns);
DECONSTRUCT_CTRLR();
}
static void
@ -546,6 +574,8 @@ test_get_feature_cmd(void)
verify_fn = verify_get_feature_cmd;
spdk_nvme_ctrlr_cmd_get_feature(&ctrlr, get_feature, get_feature_cdw11, NULL, 0, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void
@ -560,6 +590,8 @@ test_abort_cmd(void)
qpair.id = abort_sqid;
spdk_nvme_ctrlr_cmd_abort(&ctrlr, &qpair, abort_cid, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void
@ -572,6 +604,8 @@ test_io_cmd_raw_no_payload_build(void)
verify_fn = verify_io_cmd_raw_no_payload_build;
spdk_nvme_ctrlr_io_cmd_raw_no_payload_build(&ctrlr, &qpair, &cmd, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void
@ -584,6 +618,8 @@ test_io_raw_cmd(void)
verify_fn = verify_io_raw_cmd;
spdk_nvme_ctrlr_cmd_io_raw(&ctrlr, &qpair, &cmd, NULL, 1, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void
@ -596,6 +632,8 @@ test_io_raw_cmd_with_md(void)
verify_fn = verify_io_raw_cmd_with_md;
spdk_nvme_ctrlr_cmd_io_raw_with_md(&ctrlr, &qpair, &cmd, NULL, 1, NULL, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static int
@ -609,6 +647,7 @@ test_set_host_id_by_case(uint32_t host_id_size)
rc = nvme_ctrlr_cmd_set_host_id(&ctrlr, NULL, expected_host_id_size, NULL, NULL);
DECONSTRUCT_CTRLR();
return rc;
}
@ -641,6 +680,8 @@ test_namespace_attach(void)
verify_fn = verify_namespace_attach;
nvme_ctrlr_cmd_attach_ns(&ctrlr, namespace_management_nsid, &payload, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void
@ -652,6 +693,8 @@ test_namespace_detach(void)
verify_fn = verify_namespace_detach;
nvme_ctrlr_cmd_detach_ns(&ctrlr, namespace_management_nsid, &payload, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void
@ -662,6 +705,8 @@ test_namespace_create(void)
verify_fn = verify_namespace_create;
nvme_ctrlr_cmd_create_ns(&ctrlr, &payload, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void
@ -671,6 +716,8 @@ test_namespace_delete(void)
verify_fn = verify_namespace_delete;
nvme_ctrlr_cmd_delete_ns(&ctrlr, namespace_management_nsid, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void
@ -681,6 +728,8 @@ test_doorbell_buffer_config(void)
verify_fn = verify_doorbell_buffer_config;
nvme_ctrlr_cmd_doorbell_buffer_config(&ctrlr, PRP_ENTRY_1, PRP_ENTRY_2, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void
@ -692,6 +741,8 @@ test_format_nvme(void)
verify_fn = verify_format_nvme;
nvme_ctrlr_cmd_format(&ctrlr, format_nvme_nsid, &format, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void
@ -706,6 +757,8 @@ test_fw_commit(void)
verify_fn = verify_fw_commit;
nvme_ctrlr_cmd_fw_commit(&ctrlr, &fw_commit, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void
@ -717,6 +770,8 @@ test_fw_image_download(void)
nvme_ctrlr_cmd_fw_image_download(&ctrlr, fw_img_size, fw_img_offset, NULL,
NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void
@ -734,6 +789,7 @@ test_sanitize(void)
nvme_ctrlr_cmd_sanitize(&ctrlr, sanitize_nvme_nsid, &sanitize, 0, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void
@ -744,6 +800,8 @@ test_directive_receive(void)
spdk_nvme_ctrlr_cmd_directive_receive(&ctrlr, directive_nsid, 0, 0, 0, NULL, 0,
0, 0, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void
@ -754,6 +812,8 @@ test_directive_send(void)
spdk_nvme_ctrlr_cmd_directive_send(&ctrlr, directive_nsid, 0, 0, 0, NULL, 0,
0, 0, NULL, NULL);
DECONSTRUCT_CTRLR();
}
static void