scsi: move subtask_list to spdk_iscsi_task

The SCSI layer doesn't use subtasks; these are an iSCSI layer concept.

Change-Id: I83871f02362f10fd4ecd4b2a1544eb76bfa53595
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
Daniel Verkamp 2017-05-03 13:21:56 -07:00
parent 6f01da764c
commit 4ccf74ab3b
4 changed files with 17 additions and 15 deletions

View File

@ -160,7 +160,6 @@ struct spdk_scsi_task {
uint32_t *owner_task_ctr; uint32_t *owner_task_ctr;
uint32_t abort_id; uint32_t abort_id;
TAILQ_HEAD(subtask_list, spdk_scsi_task) subtask_list;
}; };
struct spdk_scsi_port; struct spdk_scsi_port;

View File

@ -868,15 +868,15 @@ static void
process_completed_read_subtask_list(struct spdk_iscsi_conn *conn, process_completed_read_subtask_list(struct spdk_iscsi_conn *conn,
struct spdk_iscsi_task *primary) struct spdk_iscsi_task *primary)
{ {
struct spdk_scsi_task *tmp; struct spdk_iscsi_task *tmp;
while (!TAILQ_EMPTY(&primary->scsi.subtask_list)) { while (!TAILQ_EMPTY(&primary->subtask_list)) {
tmp = TAILQ_FIRST(&primary->scsi.subtask_list); tmp = TAILQ_FIRST(&primary->subtask_list);
if (tmp->offset == primary->scsi.bytes_completed) { if (tmp->scsi.offset == primary->scsi.bytes_completed) {
TAILQ_REMOVE(&primary->scsi.subtask_list, tmp, scsi_link); TAILQ_REMOVE(&primary->subtask_list, tmp, subtask_link);
primary->scsi.bytes_completed += tmp->length; primary->scsi.bytes_completed += tmp->scsi.length;
spdk_iscsi_task_response(conn, (struct spdk_iscsi_task *)tmp); spdk_iscsi_task_response(conn, tmp);
spdk_iscsi_task_put((struct spdk_iscsi_task *)tmp); spdk_iscsi_task_put(tmp);
} else { } else {
break; break;
} }
@ -888,20 +888,20 @@ process_read_task_completion(struct spdk_iscsi_conn *conn,
struct spdk_iscsi_task *task, struct spdk_iscsi_task *task,
struct spdk_iscsi_task *primary) struct spdk_iscsi_task *primary)
{ {
struct spdk_scsi_task *tmp; struct spdk_iscsi_task *tmp;
bool flag = false; bool flag = false;
if ((task != primary) && if ((task != primary) &&
(task->scsi.offset != primary->scsi.bytes_completed)) { (task->scsi.offset != primary->scsi.bytes_completed)) {
TAILQ_FOREACH(tmp, &primary->scsi.subtask_list, scsi_link) { TAILQ_FOREACH(tmp, &primary->subtask_list, link) {
if (task->scsi.offset < tmp->offset) { if (task->scsi.offset < tmp->scsi.offset) {
TAILQ_INSERT_BEFORE(tmp, &task->scsi, scsi_link); TAILQ_INSERT_BEFORE(tmp, task, subtask_link);
flag = true; flag = true;
break; break;
} }
} }
if (!flag) { if (!flag) {
TAILQ_INSERT_TAIL(&primary->scsi.subtask_list, &task->scsi, scsi_link); TAILQ_INSERT_TAIL(&primary->subtask_list, task, subtask_link);
} }
return; return;
} }

View File

@ -2901,7 +2901,7 @@ static int spdk_iscsi_op_scsi_read(struct spdk_iscsi_conn *conn,
{ {
int32_t remaining_size = 0; 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.dxfer_dir = SPDK_SCSI_DIR_FROM_DEV;
task->scsi.parent = NULL; task->scsi.parent = NULL;
task->scsi.offset = 0; task->scsi.offset = 0;

View File

@ -75,6 +75,9 @@ struct spdk_iscsi_task {
uint32_t ttt; uint32_t ttt;
TAILQ_ENTRY(spdk_iscsi_task) link; 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 static inline void