aboutsummaryrefslogtreecommitdiff
path: root/drivers/scsi
diff options
context:
space:
mode:
authorMike Christie <michaelc@cs.wisc.edu>2006-06-28 12:00:31 -0500
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2006-06-29 11:09:06 -0400
commit6a8a0d3621745279a131d95f0204dc9ddac60d55 (patch)
treee3e856d0a8b3f0697a1e59492dd840dbd3babb8a /drivers/scsi
parent8434aa8b6fe5af27a33b8aa830c24e3680356c83 (diff)
[SCSI] iscsi: pass target nr to session creation
So the drivers do not use the channel numbers, but some do use the target numbers. We were just adding some goofy variable that just increases for the target nr. This is useless for software iscsi because it is always zero. And for qla4xxx the target nr is actually the index of the target/session in its FW or FLASH tables. We needed to expose this to userspace so apps could access those numbers so this patch just adds the target nr to the iscsi session creation functions. This way when qla4xxx's Hw thinks a session is at target nr 4 in its hw, it is exposed as that number in sysfs. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/libiscsi.c2
-rw-r--r--drivers/scsi/scsi_transport_iscsi.c14
2 files changed, 8 insertions, 8 deletions
diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c
index 499e79f0cac..7e6e031cc41 100644
--- a/drivers/scsi/libiscsi.c
+++ b/drivers/scsi/libiscsi.c
@@ -1290,7 +1290,7 @@ iscsi_session_setup(struct iscsi_transport *iscsit,
if (!try_module_get(iscsit->owner))
goto cls_session_fail;
- cls_session = iscsi_create_session(shost, iscsit);
+ cls_session = iscsi_create_session(shost, iscsit, 0);
if (!cls_session)
goto module_put;
*(unsigned long*)shost->hostdata = (unsigned long)cls_session;
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
index f39da0cf5f1..7963c0538de 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -304,6 +304,8 @@ iscsi_alloc_session(struct Scsi_Host *shost,
INIT_LIST_HEAD(&session->host_list);
INIT_LIST_HEAD(&session->sess_list);
+ /* this is released in the dev's release function */
+ scsi_host_get(shost);
session->dev.parent = &shost->shost_gendev;
session->dev.release = iscsi_session_release;
device_initialize(&session->dev);
@@ -313,18 +315,15 @@ iscsi_alloc_session(struct Scsi_Host *shost,
}
EXPORT_SYMBOL_GPL(iscsi_alloc_session);
-int iscsi_add_session(struct iscsi_cls_session *session)
+int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id)
{
struct Scsi_Host *shost = iscsi_session_to_shost(session);
struct iscsi_host *ihost;
int err;
- /* this is released in the dev's release function */
- scsi_host_get(shost);
ihost = shost->shost_data;
-
session->sid = iscsi_session_nr++;
- session->target_id = ihost->next_target_id++;
+ session->target_id = target_id;
snprintf(session->dev.bus_id, BUS_ID_SIZE, "session%u",
session->sid);
@@ -356,7 +355,8 @@ EXPORT_SYMBOL_GPL(iscsi_add_session);
**/
struct iscsi_cls_session *
iscsi_create_session(struct Scsi_Host *shost,
- struct iscsi_transport *transport)
+ struct iscsi_transport *transport,
+ unsigned int target_id)
{
struct iscsi_cls_session *session;
@@ -364,7 +364,7 @@ iscsi_create_session(struct Scsi_Host *shost,
if (!session)
return NULL;
- if (iscsi_add_session(session)) {
+ if (iscsi_add_session(session, target_id)) {
iscsi_free_session(session);
return NULL;
}