[PATCH v3 09/10] nvme: add handling for app_tag
Anuj Gupta
anuj20.g at samsung.com
Fri Aug 23 03:38:10 PDT 2024
From: Kanchan Joshi <joshi.k at samsung.com>
With user integrity buffer, there is a way to specify the app_tag.
Set the corresponding protocol specific flags and send the app_tag down.
Signed-off-by: Anuj Gupta <anuj20.g at samsung.com>
Signed-off-by: Kanchan Joshi <joshi.k at samsung.com>
---
drivers/nvme/host/core.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index d4c366df8f12..af6940ec6e3c 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -871,6 +871,13 @@ static blk_status_t nvme_setup_discard(struct nvme_ns *ns, struct request *req,
return BLK_STS_OK;
}
+static void nvme_set_app_tag(struct nvme_command *cmnd, u16 apptag)
+{
+ cmnd->rw.apptag = cpu_to_le16(apptag);
+ /* use 0xfff as mask so that apptag is used in entirety */
+ cmnd->rw.appmask = cpu_to_le16(0xffff);
+}
+
static void nvme_set_ref_tag(struct nvme_ns *ns, struct nvme_command *cmnd,
struct request *req)
{
@@ -1010,6 +1017,11 @@ static inline blk_status_t nvme_setup_rw(struct nvme_ns *ns,
control |= NVME_RW_APPEND_PIREMAP;
nvme_set_ref_tag(ns, cmnd, req);
}
+ if (bio_integrity_flagged(req->bio, BIP_CHECK_APPTAG)) {
+ control |= NVME_RW_PRINFO_PRCHK_APP;
+ nvme_set_app_tag(cmnd,
+ bio_integrity(req->bio)->app_tag);
+ }
}
cmnd->rw.control = cpu_to_le16(control);
--
2.25.1
More information about the Linux-nvme
mailing list