test/nvme/nvme_ns_cmd: read_with_md

Change-Id: I8cc8fc38a827444f89762aa45ee536da08696be5
Signed-off-by: Lu Fan <lux.fan@intel.com>
Reviewed-on: https://review.gerrithub.io/361876
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: GangCao <gang.cao@intel.com>
This commit is contained in:
Lu Fan 2017-05-14 22:24:52 +08:00 committed by Jim Harris
parent 18bc3a5ef6
commit 7f94346a07

View File

@ -1087,6 +1087,50 @@ test_nvme_ns_cmd_write_with_md(void)
free(metadata);
}
static void
test_nvme_ns_cmd_read_with_md(void)
{
struct spdk_nvme_ns ns;
struct spdk_nvme_ctrlr ctrlr;
struct spdk_nvme_qpair qpair;
int rc = 0;
char *buffer = NULL;
char *metadata = NULL;
uint32_t block_size, md_size;
block_size = 512;
md_size = 128;
buffer = malloc(block_size * 256);
SPDK_CU_ASSERT_FATAL(buffer != NULL);
metadata = malloc(md_size * 256);
SPDK_CU_ASSERT_FATAL(metadata != NULL);
/*
* 512 byte data + 128 byte metadata
* Separate metadata buffer
* Max data transfer size 128 KB
* No stripe size
*
* 256 blocks * 512 bytes per block = single 128 KB I/O (no splitting required)
*/
prepare_for_test(&ns, &ctrlr, &qpair, 512, 128, 128 * 1024, 0, false);
rc = spdk_nvme_ns_cmd_read_with_md(&ns, &qpair, buffer, metadata, 0x1000, 256, NULL, NULL, 0, 0,
0);
SPDK_CU_ASSERT_FATAL(rc == 0);
SPDK_CU_ASSERT_FATAL(g_request != NULL);
SPDK_CU_ASSERT_FATAL(g_request->num_children == 0);
CU_ASSERT(g_request->payload.md == metadata);
CU_ASSERT(g_request->payload_size == 256 * 512);
nvme_free_request(g_request);
cleanup_after_test(&qpair);
free(buffer);
free(metadata);
}
int main(int argc, char **argv)
{
@ -1122,6 +1166,7 @@ int main(int argc, char **argv)
|| CU_add_test(suite, "nvme_ns_cmd_reservation_report", test_nvme_ns_cmd_reservation_report) == NULL
|| CU_add_test(suite, "test_cmd_child_request", test_cmd_child_request) == NULL
|| CU_add_test(suite, "nvme_ns_cmd_readv", test_nvme_ns_cmd_readv) == NULL
|| CU_add_test(suite, "nvme_ns_cmd_read_with_md", test_nvme_ns_cmd_read_with_md) == NULL
|| CU_add_test(suite, "nvme_ns_cmd_writev", test_nvme_ns_cmd_writev) == NULL
|| CU_add_test(suite, "nvme_ns_cmd_write_with_md", test_nvme_ns_cmd_write_with_md) == NULL
) {