Commit 42daa14f authored by Jim Harris's avatar Jim Harris Committed by Changpeng Liu
Browse files

iscsi: accumulate data_transferred properly for large writes



Without this fix, large writes would report underflow.  Linux
initiator seems to ignore the underflow condition, but ESXi
initiator would properly detect it.

Signed-off-by: default avatarJim Harris <james.r.harris@intel.com>
Change-Id: Icab28531c44f61a8e5529bcee989d0c2bf41d043

Reviewed-on: https://review.gerrithub.io/423906


Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
parent b6770c73
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -900,10 +900,13 @@ spdk_iscsi_task_cpl(struct spdk_scsi_task *scsi_task)
		process_read_task_completion(conn, task, primary);
	} else {
		primary->bytes_completed += task->scsi.length;
		if ((task != primary) &&
		    (task->scsi.status != SPDK_SCSI_STATUS_GOOD)) {
		if (task != primary) {
			if (task->scsi.status == SPDK_SCSI_STATUS_GOOD) {
				primary->scsi.data_transferred += task->scsi.data_transferred;
			} else {
				spdk_scsi_task_copy_status(&primary->scsi, &task->scsi);
			}
		}

		if (primary->bytes_completed == primary->scsi.transfer_len) {
			spdk_del_transfer_task(conn, primary->tag);