Commit d39038e1 authored by Konrad Sztyber's avatar Konrad Sztyber Committed by Jim Harris
Browse files

nvmf: check for zcopy_start failure in request_complete



It ensures that we decrement io_outstanding counter for requests for
which zcopy_start failed.  Also, removed a note stating that such
requests are reverted to regular IO path, as this is not the case.

Signed-off-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Change-Id: I8eaee88abfd94b73614b367fef9bb938c9962617
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10791


Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 7a374fbc
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -3927,7 +3927,6 @@ _nvmf_request_complete(void *ctx)
		break;
	case NVMF_ZCOPY_PHASE_INIT:
		if (spdk_unlikely(spdk_nvme_cpl_is_error(rsp))) {
			/* The START failed or was aborted so revert to a normal IO */
			req->zcopy_phase = NVMF_ZCOPY_PHASE_INIT_FAILED;
			TAILQ_REMOVE(&qpair->outstanding, req, link);
		} else {
@@ -3956,8 +3955,9 @@ _nvmf_request_complete(void *ctx)
			assert(sgroup->mgmt_io_outstanding > 0);
			sgroup->mgmt_io_outstanding--;
		} else {
			if ((req->zcopy_phase == NVMF_ZCOPY_PHASE_NONE) ||
			    (req->zcopy_phase == NVMF_ZCOPY_PHASE_COMPLETE)) {
			if (req->zcopy_phase == NVMF_ZCOPY_PHASE_NONE ||
			    req->zcopy_phase == NVMF_ZCOPY_PHASE_COMPLETE ||
			    req->zcopy_phase == NVMF_ZCOPY_PHASE_INIT_FAILED) {
				/* End of request */

				/* NOTE: This implicitly also checks for 0, since 0 - 1 wraps around to UINT32_MAX. */