From b4de8e115870c40bd64693980f2e2d06cffe38f2 Mon Sep 17 00:00:00 2001 From: Seth Howell Date: Fri, 3 Aug 2018 09:09:41 -0700 Subject: [PATCH] nvmf_tgt: add support for remote invalidate. Change-Id: I619421677ecc77c3b458c3b98fdc1cb27870a222 Signed-off-by: Seth Howell Reviewed-on: https://review.gerrithub.io/421258 Chandler-Test-Pool: SPDK Automated Test System Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Jim Harris --- lib/nvmf/rdma.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/nvmf/rdma.c b/lib/nvmf/rdma.c index af564ee77..9fd82e636 100644 --- a/lib/nvmf/rdma.c +++ b/lib/nvmf/rdma.c @@ -1020,6 +1020,11 @@ spdk_nvmf_rdma_request_get_xfer(struct spdk_nvmf_rdma_request *rdma_req) struct spdk_nvme_cmd *cmd = &rdma_req->req.cmd->nvme_cmd; struct spdk_nvme_sgl_descriptor *sgl = &cmd->dptr.sgl1; +#ifdef SPDK_CONFIG_RDMA_SEND_WITH_INVAL + rdma_req->rsp.wr.opcode = IBV_WR_SEND; + rdma_req->rsp.wr.imm_data = 0; +#endif + /* Figure out data transfer direction */ if (cmd->opc == SPDK_NVME_OPC_FABRIC) { xfer = spdk_nvme_opc_get_data_transfer(rdma_req->req.cmd->nvmf_cmd.fctype); @@ -1139,6 +1144,12 @@ spdk_nvmf_rdma_request_parse_sgl(struct spdk_nvmf_rdma_transport *rtransport, rsp->status.sc = SPDK_NVME_SC_DATA_SGL_LENGTH_INVALID; return -1; } +#ifdef SPDK_CONFIG_RDMA_SEND_WITH_INVAL + if (sgl->keyed.subtype == SPDK_NVME_SGL_SUBTYPE_INVALIDATE_KEY) { + rdma_req->rsp.wr.opcode = IBV_WR_SEND_WITH_INV; + rdma_req->rsp.wr.imm_data = sgl->keyed.key; + } +#endif /* fill request length and populate iovs */ rdma_req->req.length = sgl->keyed.length;