Loading include/spdk/scsi.h +0 −1 Original line number Diff line number Diff line Loading @@ -160,7 +160,6 @@ struct spdk_scsi_task { uint32_t *owner_task_ctr; uint32_t abort_id; TAILQ_HEAD(subtask_list, spdk_scsi_task) subtask_list; }; struct spdk_scsi_port; Loading lib/iscsi/conn.c +14 −14 Original line number Diff line number Diff line Loading @@ -868,15 +868,15 @@ static void process_completed_read_subtask_list(struct spdk_iscsi_conn *conn, struct spdk_iscsi_task *primary) { struct spdk_scsi_task *tmp; while (!TAILQ_EMPTY(&primary->scsi.subtask_list)) { tmp = TAILQ_FIRST(&primary->scsi.subtask_list); if (tmp->offset == primary->scsi.bytes_completed) { TAILQ_REMOVE(&primary->scsi.subtask_list, tmp, scsi_link); primary->scsi.bytes_completed += tmp->length; spdk_iscsi_task_response(conn, (struct spdk_iscsi_task *)tmp); spdk_iscsi_task_put((struct spdk_iscsi_task *)tmp); struct spdk_iscsi_task *tmp; while (!TAILQ_EMPTY(&primary->subtask_list)) { tmp = TAILQ_FIRST(&primary->subtask_list); if (tmp->scsi.offset == primary->scsi.bytes_completed) { TAILQ_REMOVE(&primary->subtask_list, tmp, subtask_link); primary->scsi.bytes_completed += tmp->scsi.length; spdk_iscsi_task_response(conn, tmp); spdk_iscsi_task_put(tmp); } else { break; } Loading @@ -888,20 +888,20 @@ process_read_task_completion(struct spdk_iscsi_conn *conn, struct spdk_iscsi_task *task, struct spdk_iscsi_task *primary) { struct spdk_scsi_task *tmp; struct spdk_iscsi_task *tmp; bool flag = false; if ((task != primary) && (task->scsi.offset != primary->scsi.bytes_completed)) { TAILQ_FOREACH(tmp, &primary->scsi.subtask_list, scsi_link) { if (task->scsi.offset < tmp->offset) { TAILQ_INSERT_BEFORE(tmp, &task->scsi, scsi_link); TAILQ_FOREACH(tmp, &primary->subtask_list, link) { if (task->scsi.offset < tmp->scsi.offset) { TAILQ_INSERT_BEFORE(tmp, task, subtask_link); flag = true; break; } } if (!flag) { TAILQ_INSERT_TAIL(&primary->scsi.subtask_list, &task->scsi, scsi_link); TAILQ_INSERT_TAIL(&primary->subtask_list, task, subtask_link); } return; } Loading lib/iscsi/iscsi.c +1 −1 Original line number Diff line number Diff line Loading @@ -2901,7 +2901,7 @@ static int spdk_iscsi_op_scsi_read(struct spdk_iscsi_conn *conn, { int32_t remaining_size = 0; TAILQ_INIT(&task->scsi.subtask_list); TAILQ_INIT(&task->subtask_list); task->scsi.dxfer_dir = SPDK_SCSI_DIR_FROM_DEV; task->scsi.parent = NULL; task->scsi.offset = 0; Loading lib/iscsi/task.h +3 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,9 @@ struct spdk_iscsi_task { uint32_t ttt; TAILQ_ENTRY(spdk_iscsi_task) link; TAILQ_HEAD(subtask_list, spdk_iscsi_task) subtask_list; TAILQ_ENTRY(spdk_iscsi_task) subtask_link; }; static inline void Loading Loading
include/spdk/scsi.h +0 −1 Original line number Diff line number Diff line Loading @@ -160,7 +160,6 @@ struct spdk_scsi_task { uint32_t *owner_task_ctr; uint32_t abort_id; TAILQ_HEAD(subtask_list, spdk_scsi_task) subtask_list; }; struct spdk_scsi_port; Loading
lib/iscsi/conn.c +14 −14 Original line number Diff line number Diff line Loading @@ -868,15 +868,15 @@ static void process_completed_read_subtask_list(struct spdk_iscsi_conn *conn, struct spdk_iscsi_task *primary) { struct spdk_scsi_task *tmp; while (!TAILQ_EMPTY(&primary->scsi.subtask_list)) { tmp = TAILQ_FIRST(&primary->scsi.subtask_list); if (tmp->offset == primary->scsi.bytes_completed) { TAILQ_REMOVE(&primary->scsi.subtask_list, tmp, scsi_link); primary->scsi.bytes_completed += tmp->length; spdk_iscsi_task_response(conn, (struct spdk_iscsi_task *)tmp); spdk_iscsi_task_put((struct spdk_iscsi_task *)tmp); struct spdk_iscsi_task *tmp; while (!TAILQ_EMPTY(&primary->subtask_list)) { tmp = TAILQ_FIRST(&primary->subtask_list); if (tmp->scsi.offset == primary->scsi.bytes_completed) { TAILQ_REMOVE(&primary->subtask_list, tmp, subtask_link); primary->scsi.bytes_completed += tmp->scsi.length; spdk_iscsi_task_response(conn, tmp); spdk_iscsi_task_put(tmp); } else { break; } Loading @@ -888,20 +888,20 @@ process_read_task_completion(struct spdk_iscsi_conn *conn, struct spdk_iscsi_task *task, struct spdk_iscsi_task *primary) { struct spdk_scsi_task *tmp; struct spdk_iscsi_task *tmp; bool flag = false; if ((task != primary) && (task->scsi.offset != primary->scsi.bytes_completed)) { TAILQ_FOREACH(tmp, &primary->scsi.subtask_list, scsi_link) { if (task->scsi.offset < tmp->offset) { TAILQ_INSERT_BEFORE(tmp, &task->scsi, scsi_link); TAILQ_FOREACH(tmp, &primary->subtask_list, link) { if (task->scsi.offset < tmp->scsi.offset) { TAILQ_INSERT_BEFORE(tmp, task, subtask_link); flag = true; break; } } if (!flag) { TAILQ_INSERT_TAIL(&primary->scsi.subtask_list, &task->scsi, scsi_link); TAILQ_INSERT_TAIL(&primary->subtask_list, task, subtask_link); } return; } Loading
lib/iscsi/iscsi.c +1 −1 Original line number Diff line number Diff line Loading @@ -2901,7 +2901,7 @@ static int spdk_iscsi_op_scsi_read(struct spdk_iscsi_conn *conn, { int32_t remaining_size = 0; TAILQ_INIT(&task->scsi.subtask_list); TAILQ_INIT(&task->subtask_list); task->scsi.dxfer_dir = SPDK_SCSI_DIR_FROM_DEV; task->scsi.parent = NULL; task->scsi.offset = 0; Loading
lib/iscsi/task.h +3 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,9 @@ struct spdk_iscsi_task { uint32_t ttt; TAILQ_ENTRY(spdk_iscsi_task) link; TAILQ_HEAD(subtask_list, spdk_iscsi_task) subtask_list; TAILQ_ENTRY(spdk_iscsi_task) subtask_link; }; static inline void Loading