iscsi: handle the corner case while partial read is failed

Change-Id: If2ba687d49bd5e282c3a5f8516760859376dc658
Signed-off-by: Ziye Yang <ziye.yang@intel.com>
This commit is contained in:
Ziye Yang 2017-01-06 08:56:34 +08:00 committed by Jim Harris
parent 2a3154bd87
commit 143692d18f

View File

@ -2700,6 +2700,20 @@ spdk_iscsi_transfer_in(struct spdk_iscsi_conn *conn,
data_len = task->scsi.data_transferred;
transfer_len = task->scsi.length;
if (task->scsi.status != SPDK_SCSI_STATUS_GOOD) {
if (task != primary) {
conn->data_in_cnt--;
} else {
/* handle the case that it is a primary task which has subtasks */
if (primary->scsi.transfer_len != task->scsi.length) {
conn->data_in_cnt--;
spdk_iscsi_task_put(task);
}
}
return 0;
}
if (data_len < transfer_len) {
/* underflow */
SPDK_TRACELOG(SPDK_TRACE_DEBUG, "Underflow %u/%u\n",