diff options
author | Mike Christie <michaelc@cs.wisc.edu> | 2008-12-02 01:32:14 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-12-29 12:24:23 -0500 |
commit | 2ff79d52d56eebcffd83e9327b89d7daedf1e897 (patch) | |
tree | 66746804ba4965f7ffdc9ed32ce2f8c29e8dbac9 | |
parent | 262ef63627977acb7d8dd38c4f0f290bf49fbbfd (diff) |
[SCSI] libiscsi: pass opcode into alloc_pdu callout
We do not need to allocate a itt for data_out, so this
passes the opcode to the alloc_pdu callout.
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
-rw-r--r-- | drivers/infiniband/ulp/iser/iscsi_iser.c | 2 | ||||
-rw-r--r-- | drivers/scsi/iscsi_tcp.c | 2 | ||||
-rw-r--r-- | drivers/scsi/libiscsi.c | 14 | ||||
-rw-r--r-- | drivers/scsi/libiscsi_tcp.c | 2 | ||||
-rw-r--r-- | include/scsi/scsi_transport_iscsi.h | 2 |
5 files changed, 11 insertions, 11 deletions
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c b/drivers/infiniband/ulp/iser/iscsi_iser.c index 78bf5e4538cb..12876392516e 100644 --- a/drivers/infiniband/ulp/iser/iscsi_iser.c +++ b/drivers/infiniband/ulp/iser/iscsi_iser.c | |||
@@ -119,7 +119,7 @@ error: | |||
119 | iscsi_conn_failure(conn, rc); | 119 | iscsi_conn_failure(conn, rc); |
120 | } | 120 | } |
121 | 121 | ||
122 | static int iscsi_iser_pdu_alloc(struct iscsi_task *task) | 122 | static int iscsi_iser_pdu_alloc(struct iscsi_task *task, uint8_t opcode) |
123 | { | 123 | { |
124 | struct iscsi_iser_task *iser_task = task->dd_data; | 124 | struct iscsi_iser_task *iser_task = task->dd_data; |
125 | 125 | ||
diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c index 07d9eb14721b..de5c9b3e51fb 100644 --- a/drivers/scsi/iscsi_tcp.c +++ b/drivers/scsi/iscsi_tcp.c | |||
@@ -457,7 +457,7 @@ static int iscsi_sw_tcp_pdu_init(struct iscsi_task *task, | |||
457 | return 0; | 457 | return 0; |
458 | } | 458 | } |
459 | 459 | ||
460 | static int iscsi_sw_tcp_pdu_alloc(struct iscsi_task *task) | 460 | static int iscsi_sw_tcp_pdu_alloc(struct iscsi_task *task, uint8_t opcode) |
461 | { | 461 | { |
462 | struct iscsi_tcp_task *tcp_task = task->dd_data; | 462 | struct iscsi_tcp_task *tcp_task = task->dd_data; |
463 | 463 | ||
diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c index 6c4034b1561c..ddf53978f0be 100644 --- a/drivers/scsi/libiscsi.c +++ b/drivers/scsi/libiscsi.c | |||
@@ -225,13 +225,18 @@ static int iscsi_prep_scsi_cmd_pdu(struct iscsi_task *task) | |||
225 | itt_t itt; | 225 | itt_t itt; |
226 | int rc; | 226 | int rc; |
227 | 227 | ||
228 | rc = conn->session->tt->alloc_pdu(task); | 228 | rc = conn->session->tt->alloc_pdu(task, ISCSI_OP_SCSI_CMD); |
229 | if (rc) | 229 | if (rc) |
230 | return rc; | 230 | return rc; |
231 | hdr = (struct iscsi_cmd *) task->hdr; | 231 | hdr = (struct iscsi_cmd *) task->hdr; |
232 | itt = hdr->itt; | 232 | itt = hdr->itt; |
233 | memset(hdr, 0, sizeof(*hdr)); | 233 | memset(hdr, 0, sizeof(*hdr)); |
234 | 234 | ||
235 | if (session->tt->parse_pdu_itt) | ||
236 | hdr->itt = task->hdr_itt = itt; | ||
237 | else | ||
238 | hdr->itt = task->hdr_itt = build_itt(task->itt, | ||
239 | task->conn->session->age); | ||
235 | task->hdr_len = 0; | 240 | task->hdr_len = 0; |
236 | rc = iscsi_add_hdr(task, sizeof(*hdr)); | 241 | rc = iscsi_add_hdr(task, sizeof(*hdr)); |
237 | if (rc) | 242 | if (rc) |
@@ -240,11 +245,6 @@ static int iscsi_prep_scsi_cmd_pdu(struct iscsi_task *task) | |||
240 | hdr->flags = ISCSI_ATTR_SIMPLE; | 245 | hdr->flags = ISCSI_ATTR_SIMPLE; |
241 | int_to_scsilun(sc->device->lun, (struct scsi_lun *)hdr->lun); | 246 | int_to_scsilun(sc->device->lun, (struct scsi_lun *)hdr->lun); |
242 | memcpy(task->lun, hdr->lun, sizeof(task->lun)); | 247 | memcpy(task->lun, hdr->lun, sizeof(task->lun)); |
243 | if (session->tt->parse_pdu_itt) | ||
244 | hdr->itt = task->hdr_itt = itt; | ||
245 | else | ||
246 | hdr->itt = task->hdr_itt = build_itt(task->itt, | ||
247 | task->conn->session->age); | ||
248 | hdr->cmdsn = task->cmdsn = cpu_to_be32(session->cmdsn); | 248 | hdr->cmdsn = task->cmdsn = cpu_to_be32(session->cmdsn); |
249 | session->cmdsn++; | 249 | session->cmdsn++; |
250 | hdr->exp_statsn = cpu_to_be32(conn->exp_statsn); | 250 | hdr->exp_statsn = cpu_to_be32(conn->exp_statsn); |
@@ -532,7 +532,7 @@ __iscsi_conn_send_pdu(struct iscsi_conn *conn, struct iscsi_hdr *hdr, | |||
532 | } else | 532 | } else |
533 | task->data_count = 0; | 533 | task->data_count = 0; |
534 | 534 | ||
535 | if (conn->session->tt->alloc_pdu(task)) { | 535 | if (conn->session->tt->alloc_pdu(task, hdr->opcode)) { |
536 | iscsi_conn_printk(KERN_ERR, conn, "Could not allocate " | 536 | iscsi_conn_printk(KERN_ERR, conn, "Could not allocate " |
537 | "pdu for mgmt task.\n"); | 537 | "pdu for mgmt task.\n"); |
538 | goto requeue_task; | 538 | goto requeue_task; |
diff --git a/drivers/scsi/libiscsi_tcp.c b/drivers/scsi/libiscsi_tcp.c index e86508936314..9df6b3436e4a 100644 --- a/drivers/scsi/libiscsi_tcp.c +++ b/drivers/scsi/libiscsi_tcp.c | |||
@@ -1021,7 +1021,7 @@ flush: | |||
1021 | return 0; | 1021 | return 0; |
1022 | } | 1022 | } |
1023 | 1023 | ||
1024 | rc = conn->session->tt->alloc_pdu(task); | 1024 | rc = conn->session->tt->alloc_pdu(task, ISCSI_OP_SCSI_DATA_OUT); |
1025 | if (rc) | 1025 | if (rc) |
1026 | return rc; | 1026 | return rc; |
1027 | iscsi_prep_data_out_pdu(task, r2t, (struct iscsi_data *) task->hdr); | 1027 | iscsi_prep_data_out_pdu(task, r2t, (struct iscsi_data *) task->hdr); |
diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h index e13cb20f1eae..b50aabe2861e 100644 --- a/include/scsi/scsi_transport_iscsi.h +++ b/include/scsi/scsi_transport_iscsi.h | |||
@@ -118,7 +118,7 @@ struct iscsi_transport { | |||
118 | int (*xmit_task) (struct iscsi_task *task); | 118 | int (*xmit_task) (struct iscsi_task *task); |
119 | void (*cleanup_task) (struct iscsi_task *task); | 119 | void (*cleanup_task) (struct iscsi_task *task); |
120 | 120 | ||
121 | int (*alloc_pdu) (struct iscsi_task *task); | 121 | int (*alloc_pdu) (struct iscsi_task *task, uint8_t opcode); |
122 | int (*xmit_pdu) (struct iscsi_task *task); | 122 | int (*xmit_pdu) (struct iscsi_task *task); |
123 | int (*init_pdu) (struct iscsi_task *task, unsigned int offset, | 123 | int (*init_pdu) (struct iscsi_task *task, unsigned int offset, |
124 | unsigned int count); | 124 | unsigned int count); |