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:
parent
6f01da764c
commit
4ccf74ab3b
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user