Commit 49e433f8 authored by Evgeniy Kochetov's avatar Evgeniy Kochetov Committed by Tomasz Zawadzki
Browse files

nvme/ctrlr: Allocate non-DMA memory for ANA log page



Log page reading function 'spdk_nvme_ctrlr_cmd_get_log_page' does read
into intermediate buffer and then copy to user provided buffer. So,
there is no need for user buffer to allow DMA.

Signed-off-by: default avatarEvgeniy Kochetov <evgeniik@nvidia.com>
Change-Id: I7337afa99c3ae666cc43ea2a48317de875334cfc
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9177


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
parent c2605379
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -714,8 +714,7 @@ nvme_ctrlr_init_ana_log_page(struct spdk_nvme_ctrlr *ctrlr)
			    sizeof(struct spdk_nvme_ana_group_descriptor) + ctrlr->cdata.nn *
			    sizeof(uint32_t);

	ctrlr->ana_log_page = spdk_zmalloc(ana_log_page_size, 64, NULL, SPDK_ENV_SOCKET_ID_ANY,
					   SPDK_MALLOC_DMA);
	ctrlr->ana_log_page = calloc(1, ana_log_page_size);
	if (ctrlr->ana_log_page == NULL) {
		NVME_CTRLR_ERRLOG(ctrlr, "could not allocate ANA log page buffer\n");
		return -ENXIO;
@@ -3705,7 +3704,7 @@ nvme_ctrlr_destruct_poll_async(struct spdk_nvme_ctrlr *ctrlr,

	spdk_bit_array_free(&ctrlr->free_io_qids);

	spdk_free(ctrlr->ana_log_page);
	free(ctrlr->ana_log_page);
	free(ctrlr->copied_ana_desc);
	ctrlr->ana_log_page = NULL;
	ctrlr->copied_ana_desc = NULL;
+2 −2
Original line number Diff line number Diff line
@@ -2884,7 +2884,7 @@ test_nvme_ctrlr_set_supported_log_pages(void)
	CU_ASSERT(ctrlr.ana_log_page_size == sizeof(struct spdk_nvme_ana_page) +
		  sizeof(struct spdk_nvme_ana_group_descriptor) * 1 + sizeof(uint32_t) * 1);
	CU_ASSERT(ctrlr.log_page_supported[SPDK_NVME_LOG_ASYMMETRIC_NAMESPACE_ACCESS] == true);
	spdk_free(ctrlr.ana_log_page);
	free(ctrlr.ana_log_page);
	free(ctrlr.copied_ana_desc);
}

@@ -2960,7 +2960,7 @@ test_nvme_ctrlr_parse_ana_log_page(void)
	CU_ASSERT(ns[2].ana_group_id == 1);
	CU_ASSERT(ns[2].ana_state == SPDK_NVME_ANA_OPTIMIZED_STATE);

	spdk_free(ctrlr.ana_log_page);
	free(ctrlr.ana_log_page);
	free(ctrlr.copied_ana_desc);
}