summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/io/idm
diff options
context:
space:
mode:
authorJack Meng <Jack.Meng@Sun.COM>2010-01-05 10:09:39 +0800
committerJack Meng <Jack.Meng@Sun.COM>2010-01-05 10:09:39 +0800
commitbbe725837bc5e084e6762c7984672bc05d76baf1 (patch)
tree30e2877ebb9dbaefe8c0d94c284fd008827bd4ff /usr/src/uts/common/io/idm
parent99bddabb317e8d8aa0ea11dcce9425dbf7f9258d (diff)
downloadillumos-gate-bbe725837bc5e084e6762c7984672bc05d76baf1.tar.gz
6776071 iscsi boot introduced unpleasant dependency to local-fs milestone
Diffstat (limited to 'usr/src/uts/common/io/idm')
-rw-r--r--usr/src/uts/common/io/idm/idm.c4
-rw-r--r--usr/src/uts/common/io/idm/idm_impl.c15
2 files changed, 14 insertions, 5 deletions
diff --git a/usr/src/uts/common/io/idm/idm.c b/usr/src/uts/common/io/idm/idm.c
index 6660910ba8..b2c2c05a2c 100644
--- a/usr/src/uts/common/io/idm/idm.c
+++ b/usr/src/uts/common/io/idm/idm.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -392,7 +392,7 @@ idm_tgt_svc_create(idm_svc_req_t *sr, idm_svc_t **new_svc)
* instead of at initialization time in case IB has become available
* since we started (hotplug, etc).
*/
- idm_transport_setup(sr->sr_li);
+ idm_transport_setup(sr->sr_li, B_FALSE);
/*
* Loop through the transports, configuring the transport-specific
diff --git a/usr/src/uts/common/io/idm/idm_impl.c b/usr/src/uts/common/io/idm/idm_impl.c
index 02ca53c2c6..93933a9951 100644
--- a/usr/src/uts/common/io/idm/idm_impl.c
+++ b/usr/src/uts/common/io/idm/idm_impl.c
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -533,7 +533,7 @@ idm_transport_lookup(idm_conn_req_t *cr)
* instead of at initialization time in case IB has become available
* since we started (hotplug, etc).
*/
- idm_transport_setup(cr->cr_li);
+ idm_transport_setup(cr->cr_li, cr->cr_boot_conn);
/* Determine the transport for this connection */
for (type = 0; type < IDM_TRANSPORT_NUM_TYPES; type++) {
@@ -554,7 +554,7 @@ idm_transport_lookup(idm_conn_req_t *cr)
}
void
-idm_transport_setup(ldi_ident_t li)
+idm_transport_setup(ldi_ident_t li, boolean_t boot_conn)
{
idm_transport_type_t type;
idm_transport_t *it;
@@ -576,6 +576,15 @@ idm_transport_setup(ldi_ident_t li)
if (it->it_type == IDM_TRANSPORT_TYPE_SOCKETS) {
idm_so_init(it);
} else {
+ if (boot_conn == B_TRUE) {
+ /*
+ * iSCSI boot doesn't need iSER.
+ * Open iSER here may drive IO to
+ * a failed session and cause
+ * deadlock
+ */
+ continue;
+ }
rc = ldi_open_by_name(it->it_device_path,
FREAD | FWRITE, kcred, &it->it_ldi_hdl, li);
/*