Commit 50472c44 authored by Ziye Yang's avatar Ziye Yang Committed by Tomasz Zawadzki
Browse files

idxd: Do not assign the results if there is error on completion.



If there is hardware issues, we do not need to assign
the result. Because we will report the error status to the uplayer.

Change-Id: I647ddd609a1d5d0d52cc4fee59699b9992da4fa4
Signed-off-by: default avatarZiye Yang <ziye.yang@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8864


Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarPaul Luse <paul.e.luse@intel.com>
Reviewed-by: default avatarKrzysztof Karas <krzysztof.karas@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
parent 39827dd4
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -1155,11 +1155,13 @@ spdk_idxd_process_events(struct spdk_idxd_io_channel *chan)
				break;
			case IDXD_OPCODE_CRC32C_GEN:
			case IDXD_OPCODE_COPY_CRC:
				if (spdk_likely(status == 0)) {
					*comp_ctx->crc_dst = comp_ctx->hw.crc32c_val;
					*comp_ctx->crc_dst ^= ~0;
				}
				break;
			case IDXD_OPCODE_COMPARE:
				if (status == 0) {
				if (spdk_likely(status == 0)) {
					status = comp_ctx->hw.result;
				}
				break;
@@ -1169,8 +1171,8 @@ spdk_idxd_process_events(struct spdk_idxd_io_channel *chan)
				comp_ctx->cb_fn(comp_ctx->cb_arg, status);
			}

			/* reinit the status in the completion context */
			comp_ctx->hw.status = status = 0;

			if (comp_ctx->batch_op == false) {
				assert(spdk_bit_array_get(chan->ring_slots, comp_ctx->index));
				spdk_bit_array_clear(chan->ring_slots, comp_ctx->index);