diff --git a/include/spdk/nvme_ocssd.h b/include/spdk/nvme_ocssd.h index e0cc48a92..a4f853048 100644 --- a/include/spdk/nvme_ocssd.h +++ b/include/spdk/nvme_ocssd.h @@ -82,6 +82,7 @@ int spdk_nvme_ocssd_ctrlr_cmd_geometry(struct spdk_nvme_ctrlr *ctrlr, uint32_t n * LBAs must correspond to the start of chunks to reset. * Must be allocated through spdk_dma_malloc() or its variants * \param num_lbas number of LBAs stored in lba_list + * \param chunk_info an array of chunk info on DMA-able memory * \param cb_fn callback function to invoke when the I/O is completed * \param cb_arg argument to pass to the callback function * @@ -91,6 +92,7 @@ int spdk_nvme_ocssd_ctrlr_cmd_geometry(struct spdk_nvme_ctrlr *ctrlr, uint32_t n int spdk_nvme_ocssd_ns_cmd_vector_reset(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair, uint64_t *lba_list, uint32_t num_lbas, + struct spdk_ocssd_chunk_information *chunk_info, spdk_nvme_cmd_cb cb_fn, void *cb_arg); /** diff --git a/lib/nvme/nvme_ns_ocssd_cmd.c b/lib/nvme/nvme_ns_ocssd_cmd.c index fa8498278..35bf63c7c 100644 --- a/lib/nvme/nvme_ns_ocssd_cmd.c +++ b/lib/nvme/nvme_ns_ocssd_cmd.c @@ -38,6 +38,7 @@ int spdk_nvme_ocssd_ns_cmd_vector_reset(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair, uint64_t *lba_list, uint32_t num_lbas, + struct spdk_ocssd_chunk_information *chunk_info, spdk_nvme_cmd_cb cb_fn, void *cb_arg) { struct nvme_request *req; @@ -57,6 +58,10 @@ spdk_nvme_ocssd_ns_cmd_vector_reset(struct spdk_nvme_ns *ns, cmd->opc = SPDK_OCSSD_OPC_VECTOR_RESET; cmd->nsid = ns->id; + if (chunk_info != NULL) { + cmd->mptr = spdk_vtophys(chunk_info); + } + /* * Dword 10 and 11 store a pointer to the list of logical block addresses. * If there is a single entry in the LBA list, the logical block diff --git a/test/unit/lib/nvme/nvme_ns_ocssd_cmd.c/nvme_ns_ocssd_cmd_ut.c b/test/unit/lib/nvme/nvme_ns_ocssd_cmd.c/nvme_ns_ocssd_cmd_ut.c index 637cffd1f..5d1f42b8d 100644 --- a/test/unit/lib/nvme/nvme_ns_ocssd_cmd.c/nvme_ns_ocssd_cmd_ut.c +++ b/test/unit/lib/nvme/nvme_ns_ocssd_cmd.c/nvme_ns_ocssd_cmd_ut.c @@ -187,7 +187,7 @@ test_nvme_ocssd_ns_cmd_vector_reset_single_entry(void) prepare_for_test(&ns, &ctrlr, &qpair, sector_size, 0, max_xfer_size, 0, false); uint64_t lba_list = 0x12345678; spdk_nvme_ocssd_ns_cmd_vector_reset(&ns, &qpair, &lba_list, 1, - NULL, NULL); + NULL, NULL, NULL); SPDK_CU_ASSERT_FATAL(rc == 0); SPDK_CU_ASSERT_FATAL(g_request != NULL); @@ -218,7 +218,7 @@ test_nvme_ocssd_ns_cmd_vector_reset(void) prepare_for_test(&ns, &ctrlr, &qpair, sector_size, 0, max_xfer_size, 0, false); uint64_t lba_list[vector_size]; spdk_nvme_ocssd_ns_cmd_vector_reset(&ns, &qpair, lba_list, vector_size, - NULL, NULL); + NULL, NULL, NULL); SPDK_CU_ASSERT_FATAL(rc == 0); SPDK_CU_ASSERT_FATAL(g_request != NULL);