svn commit: r300315 - head/sys/dev/iscsi
Edward Tomasz Napierala
trasz at FreeBSD.org
Fri May 20 17:38:53 UTC 2016
Author: trasz
Date: Fri May 20 17:38:51 2016
New Revision: 300315
URL: https://svnweb.freebsd.org/changeset/base/300315
Log:
Call the ICL module's handoff method even when using ICL proxy.
The upcoming iSER code uses this.
MFC after: 1 month
Sponsored by: The FreeBSD Foundation
Modified:
head/sys/dev/iscsi/icl_soft.c
head/sys/dev/iscsi/iscsi.c
Modified: head/sys/dev/iscsi/icl_soft.c
==============================================================================
--- head/sys/dev/iscsi/icl_soft.c Fri May 20 17:38:45 2016 (r300314)
+++ head/sys/dev/iscsi/icl_soft.c Fri May 20 17:38:51 2016 (r300315)
@@ -1327,6 +1327,23 @@ icl_soft_conn_handoff(struct icl_conn *i
ICL_CONN_LOCK_ASSERT_NOT(ic);
+#ifdef ICL_KERNEL_PROXY
+ /*
+ * We're transitioning to Full Feature phase, and we don't
+ * really care.
+ */
+ if (fd == 0) {
+ ICL_CONN_LOCK(ic);
+ if (ic->ic_socket == NULL) {
+ ICL_CONN_UNLOCK(ic);
+ ICL_WARN("proxy handoff without connect");
+ return (EINVAL);
+ }
+ ICL_CONN_UNLOCK(ic);
+ return (0);
+ }
+#endif
+
/*
* Steal the socket from userland.
*/
Modified: head/sys/dev/iscsi/iscsi.c
==============================================================================
--- head/sys/dev/iscsi/iscsi.c Fri May 20 17:38:45 2016 (r300314)
+++ head/sys/dev/iscsi/iscsi.c Fri May 20 17:38:51 2016 (r300315)
@@ -1415,21 +1415,17 @@ iscsi_ioctl_daemon_handoff(struct iscsi_
ISCSI_SESSION_UNLOCK(is);
-#ifdef ICL_KERNEL_PROXY
- if (handoff->idh_socket != 0) {
-#endif
- /*
- * Handoff without using ICL proxy.
- */
- error = icl_conn_handoff(ic, handoff->idh_socket);
- if (error != 0) {
- sx_sunlock(&sc->sc_lock);
- iscsi_session_terminate(is);
- return (error);
- }
-#ifdef ICL_KERNEL_PROXY
+ /*
+ * If we're going through the proxy, the idh_socket will be 0,
+ * and the ICL module can simply ignore this call. It can also
+ * use it to determine it's no longer in the Login phase.
+ */
+ error = icl_conn_handoff(ic, handoff->idh_socket);
+ if (error != 0) {
+ sx_sunlock(&sc->sc_lock);
+ iscsi_session_terminate(is);
+ return (error);
}
-#endif
sx_sunlock(&sc->sc_lock);
More information about the svn-src-all
mailing list