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: Evgeniy Kochetov <evgeniik@nvidia.com>
Change-Id: I7337afa99c3ae666cc43ea2a48317de875334cfc
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9177
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
This commit is contained in:
Evgeniy Kochetov 2021-08-13 11:09:16 +03:00 committed by Tomasz Zawadzki
parent c260537919
commit 49e433f8ed
2 changed files with 4 additions and 5 deletions

View File

@ -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;

View File

@ -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);
}