Commit 05aaac9c authored by Nick Connolly's avatar Nick Connolly Committed by Tomasz Zawadzki
Browse files

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: default avatarNick 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: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent b34fb47d
Loading
Loading
Loading
Loading
+61 −1
Original line number Diff line number Diff line
@@ -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