Commit e3eba25d authored by Daniel Verkamp's avatar Daniel Verkamp
Browse files

test/nvme/sgl: free SGL element buffers



Change-Id: I1bfcbda4722ae42bd54433bf43e5c954b0775f01
Signed-off-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent af058fd7
Loading
Loading
Loading
Loading
+24 −8
Original line number Diff line number Diff line
@@ -220,6 +220,22 @@ static void build_io_request_6(struct io_request *req)

typedef void (*nvme_build_io_req_fn_t)(struct io_request *req);

static void
free_req(struct io_request *req)
{
	uint32_t i;

	if (req == NULL) {
		return;
	}

	for (i = 0; i < req->nseg; i++) {
		rte_free(req->iovs[i].base);
	}

	rte_free(req);
}

static int
writev_readv_tests(struct dev *dev, nvme_build_io_req_fn_t build_io_fn, const char *test_name)
{
@@ -264,13 +280,13 @@ writev_readv_tests(struct dev *dev, nvme_build_io_req_fn_t build_io_fn, const ch
	lba_count = len / spdk_nvme_ns_get_sector_size(ns);
	if (!lba_count || (BASE_LBA_START + lba_count > (uint32_t)nsdata->nsze)) {
		fprintf(stderr, "%s: %s Invalid IO length parameter\n", dev->name, test_name);
		rte_free(req);
		free_req(req);
		return 0;
	}

	qpair = spdk_nvme_ctrlr_alloc_io_qpair(dev->ctrlr, 0);
	if (!qpair) {
		rte_free(req);
		free_req(req);
		return -1;
	}

@@ -287,7 +303,7 @@ writev_readv_tests(struct dev *dev, nvme_build_io_req_fn_t build_io_fn, const ch
	if (rc != 0) {
		fprintf(stderr, "%s: %s writev failed\n", dev->name, test_name);
		spdk_nvme_ctrlr_free_io_qpair(qpair);
		rte_free(req);
		free_req(req);
		return -1;
	}

@@ -299,7 +315,7 @@ writev_readv_tests(struct dev *dev, nvme_build_io_req_fn_t build_io_fn, const ch
	if (io_complete_flag != 1) {
		fprintf(stderr, "%s: %s writev failed\n", dev->name, test_name);
		spdk_nvme_ctrlr_free_io_qpair(qpair);
		rte_free(req);
		free_req(req);
		return -1;
	}

@@ -318,7 +334,7 @@ writev_readv_tests(struct dev *dev, nvme_build_io_req_fn_t build_io_fn, const ch
	if (rc != 0) {
		fprintf(stderr, "%s: %s readv failed\n", dev->name, test_name);
		spdk_nvme_ctrlr_free_io_qpair(qpair);
		rte_free(req);
		free_req(req);
		return -1;
	}

@@ -328,7 +344,7 @@ writev_readv_tests(struct dev *dev, nvme_build_io_req_fn_t build_io_fn, const ch
	if (io_complete_flag != 1) {
		fprintf(stderr, "%s: %s readv failed\n", dev->name, test_name);
		spdk_nvme_ctrlr_free_io_qpair(qpair);
		rte_free(req);
		free_req(req);
		return -1;
	}

@@ -338,7 +354,7 @@ writev_readv_tests(struct dev *dev, nvme_build_io_req_fn_t build_io_fn, const ch
			if (buf[j] != DATA_PATTERN) {
				fprintf(stderr, "%s: %s write/read success, but memcmp Failed\n", dev->name, test_name);
				spdk_nvme_ctrlr_free_io_qpair(qpair);
				rte_free(req);
				free_req(req);
				return -1;
			}
		}
@@ -346,7 +362,7 @@ writev_readv_tests(struct dev *dev, nvme_build_io_req_fn_t build_io_fn, const ch

	fprintf(stdout, "%s: %s test passed\n", dev->name, test_name);
	spdk_nvme_ctrlr_free_io_qpair(qpair);
	rte_free(req);
	free_req(req);
	return rc;
}