lib/iscsi: Separate split and non-split in process_non_read_task_completion()
In process_non_read_task_completion(), when the current I/O is not split, we have to call only spdk_iscsi_task_response(). The next patch will fix the github issue by changing the path executed when the current I/O is split. Hence to make the fix easier, this patch separates split case and non-split case. Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Change-Id: Ic1603609f760c4bdd41272ba6146e260f668b059 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/475043 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
0e39681d17
commit
8238265548
@ -1081,11 +1081,6 @@ process_non_read_task_completion(struct spdk_iscsi_conn *conn,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (primary->bytes_completed == primary->scsi.transfer_len) {
|
if (primary->bytes_completed == primary->scsi.transfer_len) {
|
||||||
spdk_del_transfer_task(conn, primary->tag);
|
|
||||||
if (primary->rsp_scsi_status != SPDK_SCSI_STATUS_GOOD) {
|
|
||||||
iscsi_task_copy_from_rsp_scsi_status(&primary->scsi, primary);
|
|
||||||
}
|
|
||||||
spdk_iscsi_task_response(conn, primary);
|
|
||||||
/*
|
/*
|
||||||
* Check if this is the last task completed for an iSCSI write
|
* Check if this is the last task completed for an iSCSI write
|
||||||
* that required child subtasks. If task != primary, we know
|
* that required child subtasks. If task != primary, we know
|
||||||
@ -1095,8 +1090,15 @@ process_non_read_task_completion(struct spdk_iscsi_conn *conn,
|
|||||||
* the overall transfer length.
|
* the overall transfer length.
|
||||||
*/
|
*/
|
||||||
if (task != primary || task->scsi.length != task->scsi.transfer_len) {
|
if (task != primary || task->scsi.length != task->scsi.transfer_len) {
|
||||||
|
spdk_del_transfer_task(conn, primary->tag);
|
||||||
|
if (primary->rsp_scsi_status != SPDK_SCSI_STATUS_GOOD) {
|
||||||
|
iscsi_task_copy_from_rsp_scsi_status(&primary->scsi, primary);
|
||||||
|
}
|
||||||
|
spdk_iscsi_task_response(conn, primary);
|
||||||
TAILQ_REMOVE(&conn->active_r2t_tasks, primary, link);
|
TAILQ_REMOVE(&conn->active_r2t_tasks, primary, link);
|
||||||
spdk_iscsi_task_put(primary);
|
spdk_iscsi_task_put(primary);
|
||||||
|
} else {
|
||||||
|
spdk_iscsi_task_response(conn, task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
spdk_iscsi_task_put(task);
|
spdk_iscsi_task_put(task);
|
||||||
|
Loading…
Reference in New Issue
Block a user