I am able to create a condition where the open-iscsi initiator fails to 
respond to an R2T request if the immediate/unsolicited data support is 
large ~128KB.  I've seen instances where a delay on an R2T is only a few 
seconds and other instances where no response is received in 180 seconds.

If the host is doing a prefill operation with large writes that can be 
completed with immediate data alone and a large write that requires an R2T 
is sent, the open-iscsi initiator sometimes fails to respond to the 
target's R2T. 

After inspecting the code, I am convinced it is caused by the lack of 
fairness in the *libiscsi  **iscsi_data_xmit* routine, which always favors 
the sending a new command over responding to R2Ts. 

/**
 * iscsi_data_xmit - xmit any command into the scheduled connection
 * @conn: iscsi connection
 *
 * Notes:
 * The function can return -EAGAIN in which case the caller must
 * re-schedule it again later or recover. '0' return code means
 * successful xmit.
 **/
static int iscsi_data_xmit(struct iscsi_conn *conn)
{
...
/*
* process mgmt pdus like nops before commands since we should
* only have one nop-out as a ping from us and targets should not
* overflow us with nop-ins
*/
while (!list_empty(&conn->mgmtqueue)) {
...
/* process pending command queue */
while (!list_empty(&conn->cmdqueue)) {
...
while (!list_empty(&conn->requeue)) {


Am I looking at this code correctly?  I guess this order might be better 
for parallelization at the target by getting more commands onboard before 
responding to outstanding R2Ts. With immediate/unsolicited data enabled, 
the overhead of transmitting a new commands if higher and probably 
shouldn't come before responding to R2Ts. 


-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/open-iscsi/75d706c2-e331-45bf-b764-6aa77703a45a%40googlegroups.com.

Reply via email to