diff --git a/lib/nvmf/ctrlr.c b/lib/nvmf/ctrlr.c index ffb16799c..98d0f676f 100644 --- a/lib/nvmf/ctrlr.c +++ b/lib/nvmf/ctrlr.c @@ -2652,6 +2652,11 @@ bool spdk_nvmf_request_get_dif_ctx(struct spdk_nvmf_request *req, struct spdk_dif_ctx *dif_ctx) { struct spdk_nvmf_qpair *qpair = req->qpair; + struct spdk_nvmf_ctrlr *ctrlr = qpair->ctrlr; + + if (spdk_likely(ctrlr == NULL || !ctrlr->dif_insert_or_strip)) { + return false; + } if (spdk_unlikely(qpair->state != SPDK_NVMF_QPAIR_ACTIVE)) { return false; @@ -2665,5 +2670,5 @@ spdk_nvmf_request_get_dif_ctx(struct spdk_nvmf_request *req, struct spdk_dif_ctx return false; } - return spdk_nvmf_ctrlr_get_dif_ctx(qpair->ctrlr, &req->cmd->nvme_cmd, dif_ctx); + return spdk_nvmf_ctrlr_get_dif_ctx(ctrlr, &req->cmd->nvme_cmd, dif_ctx); } diff --git a/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c b/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c index be408c94a..f1639b2ec 100644 --- a/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c +++ b/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c @@ -1182,6 +1182,12 @@ test_get_dif_ctx(void) ns.bdev = &bdev; + ctrlr.dif_insert_or_strip = false; + + ret = spdk_nvmf_request_get_dif_ctx(&req, &dif_ctx); + CU_ASSERT(ret == false); + + ctrlr.dif_insert_or_strip = true; qpair.state = SPDK_NVMF_QPAIR_UNINITIALIZED; ret = spdk_nvmf_request_get_dif_ctx(&req, &dif_ctx);