On 01/21/2015 03:14 PM, Or Gerlitz wrote:
> On Wed, Jan 21, 2015 at 8:41 PM, Mike Christie <micha...@cs.wisc.edu
> <mailto:micha...@cs.wisc.edu>> wrote:
> 
>     On 1/21/15, 8:19 AM, Or Gerlitz wrote:
> 
>         Hi Mike,
> 
>         Long time.. hope you are all well after EOY holidays and with
>         energy to
>         for the MCS debates @ LSF...
> 
> 
>     Hey,
> 
>     Hope you are doing well too.
> 
>         So back in upstream commit
>         ea05be3ff043efd44256283d968fa1__bb9a371568
>         "iscsi tools: set non negotiated params early" we are
>         doing set_param towards the kernel/transport before sending the
>         login
>         request.
> 
>         Running with latest upstream (commit
>         76a441ba0dc0071a19daeac456aa89__8889437efd) we did dump of all
>         set_params
>         done towards iser and I see that Max Recv DSL and friends are
>         set after
>         sending the login, in both discovery and normal sessions (see
>         below), is
>         that a bug? aren't they declarative?
> 
> 
>     Most of them being set are not declarative.
> 
>     If we have ImmediateData=yes, but the target has ImmediateData=No,
>     then we end up turning off ImmediateData. MaxBurstLength uses the
>     min of what each side can support.
> 
>     Is the only one currently being set at that time that is declarative
>     MRDSL (TPGT we will not count because we can sometimes get a
>     different TGPT than what discovery told us). The thing about MRDSL
>     is that we have our own MaxXmitDataSegmentLength setting. It is not
>     a iscsi RFC setting. It is just a initiator side limit that we take
>     into account when setting the final MRDSL. See
>     usr/login.c:get_op_params___text_keys().
> 
>     Do you need the values earlier? Is it just MRSDL? We can pass that
>     earlier, but then if we find out it is larger than
>     MaxRecvDataSegmentLength we can update the value by calling set
>     param again. We could also just turn that off for iser if it causes
>     problems.
> 
> 
> What we need in iser is an early (== between bind and sending login) set
> param call to tell us the MRSDL for the initiator which is to be assumed
> by the target side. We need not worry if the value advertized before the
> login nego is larger vs. the max DSL which is going to be used by the
>  target. We need all that when running discovery over iser but if it
> makes things simpler, we can have it for Normal sessions too. Any chance
> you can suggest quick user-space patch or you want us to dig there... 
> 

It sounds like you just need something like the attached patch. Let me
know if I am misunderstanding you.



-- 
You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to open-iscsi+unsubscr...@googlegroups.com.
To post to this group, send email to open-iscsi@googlegroups.com.
Visit this group at http://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.
diff --git a/usr/initiator_common.c b/usr/initiator_common.c
index eb03b23..650bbcc 100644
--- a/usr/initiator_common.c
+++ b/usr/initiator_common.c
@@ -457,7 +457,7 @@ int iscsi_session_set_neg_params(struct iscsi_conn *conn)
 	return 0;
 }
 
-#define MAX_SESSION_PARAMS 20
+#define MAX_SESSION_PARAMS 21
 
 int iscsi_session_set_params(struct iscsi_conn *conn)
 {
@@ -569,6 +569,11 @@ int iscsi_session_set_params(struct iscsi_conn *conn)
 			.value = &session->type,
 			.type = ISCSI_INT,
 			.conn_only = 0,
+		}, {
+			.param = ISCSI_PARAM_MAX_RECV_DLENGTH,
+			.value = &conn->max_recv_dlength,
+			.type = ISCSI_INT,
+			.conn_only = 0,
 		},
 	};
 

Reply via email to