From e4a9812dee084b058eca6ebde9634a3d573a0079 Mon Sep 17 00:00:00 2001 From: Ankit Kumar Date: Mon, 11 Sep 2023 21:55:00 +0530 Subject: [PATCH] engines:nvme: fill command fields as per pi check bits Fill the application and reference tag field for read and write command only when pi_chk has the relevant bit set. Signed-off-by: Ankit Kumar Signed-off-by: Jens Axboe --- engines/nvme.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/engines/nvme.c b/engines/nvme.c index 08503b33..75a5e0c1 100644 --- a/engines/nvme.c +++ b/engines/nvme.c @@ -415,19 +415,24 @@ void fio_nvme_pi_fill(struct nvme_uring_cmd *cmd, struct io_u *io_u, case NVME_NS_DPS_PI_TYPE2: switch (data->guard_type) { case NVME_NVM_NS_16B_GUARD: - cmd->cdw14 = (__u32)slba; + if (opts->io_flags & NVME_IO_PRINFO_PRCHK_REF) + cmd->cdw14 = (__u32)slba; break; case NVME_NVM_NS_64B_GUARD: - cmd->cdw14 = (__u32)slba; - cmd->cdw3 = ((slba >> 32) & 0xffff); + if (opts->io_flags & NVME_IO_PRINFO_PRCHK_REF) { + cmd->cdw14 = (__u32)slba; + cmd->cdw3 = ((slba >> 32) & 0xffff); + } break; default: break; } - cmd->cdw15 = (opts->apptag_mask << 16 | opts->apptag); + if (opts->io_flags & NVME_IO_PRINFO_PRCHK_APP) + cmd->cdw15 = (opts->apptag_mask << 16 | opts->apptag); break; case NVME_NS_DPS_PI_TYPE3: - cmd->cdw15 = (opts->apptag_mask << 16 | opts->apptag); + if (opts->io_flags & NVME_IO_PRINFO_PRCHK_APP) + cmd->cdw15 = (opts->apptag_mask << 16 | opts->apptag); break; case NVME_NS_DPS_PI_NONE: break; -- 2.25.1