diff --git a/include/spdk/scsi.h b/include/spdk/scsi.h index 2978ddc21..b37f49878 100644 --- a/include/spdk/scsi.h +++ b/include/spdk/scsi.h @@ -107,7 +107,6 @@ struct spdk_scsi_task { struct spdk_event *cb_event; uint32_t ref; - uint32_t id; uint32_t transfer_len; uint32_t data_out_cnt; uint32_t dxfer_dir; diff --git a/lib/iscsi/conn.c b/lib/iscsi/conn.c index 6719e520b..b6910cfd3 100644 --- a/lib/iscsi/conn.c +++ b/lib/iscsi/conn.c @@ -941,7 +941,7 @@ void process_task_completion(void *arg1, void *arg2) } if (primary->scsi.bytes_completed == primary->scsi.transfer_len) { - spdk_del_transfer_task(conn, primary->scsi.id); + spdk_del_transfer_task(conn, primary->tag); spdk_iscsi_task_response(conn, primary); /* * Check if this is the last task completed for an iSCSI write diff --git a/lib/iscsi/iscsi.c b/lib/iscsi/iscsi.c index fe0d980d7..1c727040b 100644 --- a/lib/iscsi/iscsi.c +++ b/lib/iscsi/iscsi.c @@ -2601,7 +2601,7 @@ spdk_get_scsi_task_from_itt(struct spdk_iscsi_conn *conn, TAILQ_FOREACH(pdu, &conn->snack_pdu_list, tailq) { if (pdu->bhs.opcode == opcode && pdu->task != NULL && - pdu->task->scsi.id == task_tag) { + pdu->task->tag == task_tag) { task = pdu->task; break; } @@ -2630,7 +2630,7 @@ spdk_iscsi_send_datain(struct spdk_iscsi_conn *conn, rsp_pdu->data = task->scsi.iovs[0].iov_base + offset; rsp_pdu->data_from_mempool = true; - task_tag = task->scsi.id; + task_tag = task->tag; transfer_tag = 0xffffffffU; F_bit = datain_flag & ISCSI_FLAG_FINAL; @@ -2969,7 +2969,7 @@ spdk_iscsi_op_scsi(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *pdu) } task->scsi.cdb = cdb; - task->scsi.id = task_tag; + task->tag = task_tag; task->scsi.transfer_len = transfer_len; task->scsi.target_port = conn->target_port; task->scsi.initiator_port = conn->initiator_port; @@ -3126,7 +3126,7 @@ void spdk_iscsi_task_response(struct spdk_iscsi_conn *conn, primary = spdk_iscsi_task_get_primary(task); transfer_len = primary->scsi.transfer_len; - task_tag = task->scsi.id; + task_tag = task->tag; /* transfer data from logical unit */ /* (direction is view of initiator side) */ @@ -3277,7 +3277,7 @@ spdk_iscsi_op_task(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *pdu) spdk_iscsi_task_associate_pdu(task, pdu); task->scsi.target_port = conn->target_port; task->scsi.initiator_port = conn->initiator_port; - task->scsi.id = task_tag; + task->tag = task_tag; task->scsi.lun = spdk_scsi_dev_get_lun(dev, lun_i); switch (function) { @@ -3542,7 +3542,7 @@ void spdk_del_transfer_task(struct spdk_iscsi_conn *conn, uint32_t task_tag) int i; for (i = 0; i < conn->pending_r2t; i++) { - if (conn->outstanding_r2t_tasks[i]->scsi.id == task_tag) { + if (conn->outstanding_r2t_tasks[i]->tag == task_tag) { task = conn->outstanding_r2t_tasks[i]; conn->outstanding_r2t_tasks[i] = NULL; conn->data_out_cnt -= task->scsi.data_out_cnt; @@ -4068,9 +4068,9 @@ static int spdk_iscsi_op_data(struct spdk_iscsi_conn *conn, return SPDK_ISCSI_CONNECTION_FATAL; } - if (task->scsi.id != task_tag) { + if (task->tag != task_tag) { SPDK_ERRLOG("The r2t task tag is %u, and the dataout task tag is %u\n", - task->scsi.id, task_tag); + task->tag, task_tag); goto reject_return; } @@ -4167,7 +4167,7 @@ spdk_iscsi_send_r2t(struct spdk_iscsi_conn *conn, rsph->opcode = ISCSI_OP_R2T; rsph->flags |= 0x80; /* bit 0 is default to 1 */ to_be64(&rsph->lun, spdk_scsi_lun_get_id(task->scsi.lun)); - to_be32(&rsph->itt, task->scsi.id); + to_be32(&rsph->itt, task->tag); to_be32(&rsph->ttt, transfer_tag); to_be32(&rsph->stat_sn, conn->StatSN); diff --git a/lib/iscsi/task.c b/lib/iscsi/task.c index ae02b6a0c..12c3e6501 100644 --- a/lib/iscsi/task.c +++ b/lib/iscsi/task.c @@ -60,6 +60,9 @@ spdk_iscsi_task_get(uint32_t *owner_task_ctr, struct spdk_iscsi_task *parent) memset(task, 0, sizeof(*task)); spdk_scsi_task_construct((struct spdk_scsi_task *)task, owner_task_ctr, (struct spdk_scsi_task *)parent); + if (parent) { + task->tag = parent->tag; + } task->scsi.free_fn = spdk_iscsi_task_free; return task; diff --git a/lib/iscsi/task.h b/lib/iscsi/task.h index 2b782e565..77e7c2281 100644 --- a/lib/iscsi/task.h +++ b/lib/iscsi/task.h @@ -74,6 +74,8 @@ struct spdk_iscsi_task { uint32_t acked_data_sn; /* next expected datain datasn */ uint32_t ttt; + uint32_t tag; + TAILQ_ENTRY(spdk_iscsi_task) link; TAILQ_HEAD(subtask_list, spdk_iscsi_task) subtask_list; diff --git a/lib/scsi/task.c b/lib/scsi/task.c index 98d5f0fbd..282aab8f3 100644 --- a/lib/scsi/task.c +++ b/lib/scsi/task.c @@ -102,7 +102,6 @@ spdk_scsi_task_construct(struct spdk_scsi_task *task, uint32_t *owner_task_ctr, task->cdb = parent->cdb; task->target_port = parent->target_port; task->initiator_port = parent->initiator_port; - task->id = parent->id; } } diff --git a/test/lib/scsi/dev/dev_ut.c b/test/lib/scsi/dev/dev_ut.c index 5bdbdee97..96a0c9cb6 100644 --- a/test/lib/scsi/dev/dev_ut.c +++ b/test/lib/scsi/dev/dev_ut.c @@ -41,7 +41,6 @@ #include "dev.c" #include "port.c" -static uint32_t g_task_count = 0; static struct spdk_bdev g_bdev = {}; struct lun_entry { @@ -72,18 +71,12 @@ spdk_get_task(uint32_t *owner_task_ctr) return NULL; } - task->id = g_task_count; - - g_task_count++; - return task; } void spdk_scsi_task_put(struct spdk_scsi_task *task) { - g_task_count--; - free(task); } diff --git a/test/lib/scsi/lun/lun_ut.c b/test/lib/scsi/lun/lun_ut.c index 655763388..b4780d78e 100644 --- a/test/lib/scsi/lun/lun_ut.c +++ b/test/lib/scsi/lun/lun_ut.c @@ -271,9 +271,6 @@ lun_task_mgmt_execute_abort_task_not_supported(void) task->lun = lun; task->cdb = cdb; - /* Set the task's id and abort_id to the same value */ - mgmt_task->abort_id = task->id; - spdk_scsi_lun_append_task(lun, task); /* task should now be on the pending_task list */ diff --git a/test/lib/scsi/scsi_bdev/scsi_bdev_ut.c b/test/lib/scsi/scsi_bdev/scsi_bdev_ut.c index 42e9e62b9..7692d0531 100644 --- a/test/lib/scsi/scsi_bdev/scsi_bdev_ut.c +++ b/test/lib/scsi/scsi_bdev/scsi_bdev_ut.c @@ -103,7 +103,6 @@ static void spdk_init_task(struct spdk_scsi_task *task) { memset(task, 0, sizeof(*task)); - task->id = 1; task->iovs = &task->iov; task->iovcnt = 1; }