123 lines
4.5 KiB
Diff
123 lines
4.5 KiB
Diff
From 1447fa25369f107192be8fa9e5f21ec78f19dcf1 Mon Sep 17 00:00:00 2001
|
|
From: sunshihao <sunshihao@huawei.com>
|
|
Date: Mon, 1 Mar 2021 09:20:10 +0800
|
|
Subject: [PATCH 22/27] use spdk_nvme_ns_cmd_dataset_management and delete
|
|
spdk_nvme_ns_cmd_unmap_blocks
|
|
|
|
Signed-off-by: sunshihao520 <sunshihao@huawei.com>
|
|
---
|
|
include/spdk/nvme.h | 33 -----------------------------
|
|
lib/nvme/nvme_ns_cmd.c | 35 -------------------------------
|
|
module/bdev/nvme/bdev_nvme_self.c | 8 +++----
|
|
3 files changed, 4 insertions(+), 72 deletions(-)
|
|
|
|
diff --git a/include/spdk/nvme.h b/include/spdk/nvme.h
|
|
index 6393db3..9acfb89 100644
|
|
--- a/include/spdk/nvme.h
|
|
+++ b/include/spdk/nvme.h
|
|
@@ -3549,39 +3549,6 @@ bool spdk_nvme_ns_pi_md_start(struct spdk_nvme_ns *ns);
|
|
bool spdk_nvme_ns_is_dataset_mng_supported(struct spdk_nvme_ns *ns);
|
|
uint16_t spdk_nvme_get_qpair_id(struct spdk_nvme_qpair *qpair);
|
|
|
|
-/**
|
|
- * Submit a data set management request to the specified NVMe namespace. Data set
|
|
- * management operations are designed to optimize interaction with the block
|
|
- * translation layer inside the device. The most common type of operation is
|
|
- * deallocate, which is often referred to as TRIM or UNMAP.
|
|
- *
|
|
- * The command is submitted to a qpair allocated by spdk_nvme_ctrlr_alloc_io_qpair().
|
|
- * The user must ensure that only one thread submits I/O on a given qpair at any
|
|
- * given time.
|
|
- *
|
|
- * This is a convenience wrapper that will automatically allocate and construct
|
|
- * the correct data buffers. Therefore, ranges does not need to be allocated from
|
|
- * pinned memory and can be placed on the stack. If a higher performance, zero-copy
|
|
- * version of DSM is required, simply build and submit a raw command using
|
|
- * spdk_nvme_ctrlr_cmd_io_raw().
|
|
- *
|
|
- * \param ns NVMe namespace to submit the DSM request
|
|
- * \param type A bit field constructed from \ref spdk_nvme_dsm_attribute.
|
|
- * \param qpair I/O queue pair to submit the request
|
|
- * \param ranges An array of \ref spdk_nvme_dsm_range elements describing the LBAs
|
|
- * to operate on.
|
|
- * \param num_ranges The number of elements in the ranges array.
|
|
- * \param cb_fn Callback function to invoke when the I/O is completed
|
|
- * \param cb_arg Argument to pass to the callback function
|
|
- *
|
|
- * \return 0 if successfully submitted, negated POSIX errno values otherwise.
|
|
- */
|
|
-int spdk_nvme_ns_cmd_unmap_blocks(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair,
|
|
- uint32_t type,
|
|
- const struct spdk_nvme_dsm_range *ranges,
|
|
- uint16_t num_ranges,
|
|
- spdk_nvme_cmd_cb cb_fn,
|
|
- void *cb_arg);
|
|
/**
|
|
* \brief Submits a write I/O to the specified NVMe namespace.
|
|
*
|
|
diff --git a/lib/nvme/nvme_ns_cmd.c b/lib/nvme/nvme_ns_cmd.c
|
|
index 37dcdc2..9b67b8e 100644
|
|
--- a/lib/nvme/nvme_ns_cmd.c
|
|
+++ b/lib/nvme/nvme_ns_cmd.c
|
|
@@ -1221,38 +1221,3 @@ spdk_nvme_ns_cmd_reservation_report(struct spdk_nvme_ns *ns,
|
|
|
|
return nvme_qpair_submit_request(qpair, req);
|
|
}
|
|
-
|
|
-#ifdef SPDK_CONFIG_APP_RW
|
|
-int
|
|
-spdk_nvme_ns_cmd_unmap_blocks(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair,
|
|
- uint32_t type,
|
|
- const struct spdk_nvme_dsm_range *ranges, uint16_t num_ranges,
|
|
- spdk_nvme_cmd_cb cb_fn, void *cb_arg)
|
|
-{
|
|
- struct nvme_request *req = NULL;
|
|
- struct spdk_nvme_cmd *cmd = NULL;
|
|
- struct nvme_payload payload;
|
|
-
|
|
- if (ranges == NULL) {
|
|
- return -EINVAL;
|
|
- }
|
|
-
|
|
- payload = NVME_PAYLOAD_CONTIG((void *)ranges, NULL);
|
|
-
|
|
- req = nvme_allocate_request(qpair, &payload, num_ranges * sizeof(struct spdk_nvme_dsm_range),
|
|
- 0, cb_fn, cb_arg);
|
|
- if (req == NULL) {
|
|
- return -ENOMEM;
|
|
- }
|
|
-
|
|
- req->user_cb_arg = cb_arg;
|
|
-
|
|
- cmd = &req->cmd;
|
|
- cmd->opc = SPDK_NVME_OPC_DATASET_MANAGEMENT;
|
|
- cmd->nsid = ns->id;
|
|
-
|
|
- cmd->cdw10 = num_ranges - 1;
|
|
- cmd->cdw11 = type;
|
|
-
|
|
- return nvme_qpair_submit_request(qpair, req);
|
|
-}
|
|
diff --git a/module/bdev/nvme/bdev_nvme_self.c b/module/bdev/nvme/bdev_nvme_self.c
|
|
index 7371ecb..1419b1f 100644
|
|
--- a/module/bdev/nvme/bdev_nvme_self.c
|
|
+++ b/module/bdev/nvme/bdev_nvme_self.c
|
|
@@ -565,10 +565,10 @@ bdev_nvme_unmap_blocks(struct nvme_bdev *nbdev, struct spdk_io_channel *ch, void
|
|
}
|
|
|
|
spdk_bdev_set_io_location(driver_ctx, (uint8_t)LOCAL_LIBSTORAGE_BDEV_NVME);
|
|
- return spdk_nvme_ns_cmd_unmap_blocks(nbdev->nvme_ns->ns, nvme_ch->qpair,
|
|
- SPDK_NVME_DSM_ATTR_DEALLOCATE,
|
|
- unmap_d, unmap_count,
|
|
- bdev_nvme_queued_done, driver_ctx);
|
|
+ return spdk_nvme_ns_cmd_dataset_management(nbdev->nvme_ns->ns, nvme_ch->qpair,
|
|
+ SPDK_NVME_DSM_ATTR_DEALLOCATE,
|
|
+ unmap_d, unmap_count,
|
|
+ bdev_nvme_queued_done, driver_ctx);
|
|
}
|
|
|
|
void
|
|
--
|
|
2.33.0
|
|
|