diff options
Diffstat (limited to 'drivers/scsi/scsi_transport_iscsi.c')
-rw-r--r-- | drivers/scsi/scsi_transport_iscsi.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c index f39da0cf5f18..7963c0538de5 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; } |