Commit 472292cd authored by Kanchan Joshi's avatar Kanchan Joshi Committed by Jens Axboe
Browse files

nvme: add support for passing on the application tag



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.

Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarAnuj Gupta <anuj20.g@samsung.com>
Signed-off-by: default avatarKanchan Joshi <joshi.k@samsung.com>
Reviewed-by: default avatarKeith Busch <kbusch@kernel.org>
Link: https://lore.kernel.org/r/20241128112240.8867-9-anuj20.g@samsung.com


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 2c0487d8
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -885,6 +885,12 @@ 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 request *req, struct nvme_command *cmnd)
{
	cmnd->rw.lbat = cpu_to_le16(bio_integrity(req->bio)->app_tag);
	cmnd->rw.lbatm = cpu_to_le16(0xffff);
}

static void nvme_set_ref_tag(struct nvme_ns *ns, struct nvme_command *cmnd,
			      struct request *req)
{
@@ -1025,6 +1031,10 @@ 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(req, cmnd);
		}
	}

	cmnd->rw.control = cpu_to_le16(control);