diff options
| author | Jack Meng <Jack.Meng@Sun.COM> | 2010-01-05 10:09:39 +0800 |
|---|---|---|
| committer | Jack Meng <Jack.Meng@Sun.COM> | 2010-01-05 10:09:39 +0800 |
| commit | bbe725837bc5e084e6762c7984672bc05d76baf1 (patch) | |
| tree | 30e2877ebb9dbaefe8c0d94c284fd008827bd4ff /usr/src/uts/common/io/idm | |
| parent | 99bddabb317e8d8aa0ea11dcce9425dbf7f9258d (diff) | |
| download | illumos-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.c | 4 | ||||
| -rw-r--r-- | usr/src/uts/common/io/idm/idm_impl.c | 15 |
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); /* |
