Ok. Thanks.

-----Original Message-----
From: Michael Christie [mailto:[email protected]] 
Sent: Thursday, June 26, 2014 9:33 AM
To: Roi Dayan
Cc: [email protected]; Ariel Nahum
Subject: Re: [PATCH] Fix infinite loop when conn bind fails

Hey, I think I am just going to add a actor_delete in actor_timer. It makes the 
actor_timer function really simple to use then.


On Jun 19, 2014, at 6:35 AM, Roi Dayan <[email protected]> wrote:

> Hi Mike,
> 
> Is there an update about this commit?
> About the decision between adding actor_delete or using queue_delayed_reopen.
> 
> Thanks,
> Roi
> 
> 
> -----Original Message-----
> From: Mike Christie [mailto:[email protected]]
> Sent: Tuesday, June 10, 2014 8:10 PM
> To: [email protected]
> Cc: Ariel Nahum; Roi Dayan
> Subject: Re: [PATCH] Fix infinite loop when conn bind fails
> 
> On 06/09/2014 01:44 AM, Ariel Nahum wrote:
>> Currently, when conn bind fails, iscsi_conn_connect is called and it 
>> reschedules the login_timer by adding it to the pending list while 
>> it's actually already there. This will create an infinite loop when 
>> the pending list is processed.
>> 
>> To fix that, use queue_delayed_reopen which first calls actor_delete 
>> to make sure the actor is not in the list before rescheduling it.
>> 
>> Signed-off-by: Ariel Nahum <[email protected]>
>> Signed-off-by: Roi Dayan <[email protected]>
>> ---
>> usr/initiator.c |    3 +--
>> 1 files changed, 1 insertions(+), 2 deletions(-)
>> 
>> diff --git a/usr/initiator.c b/usr/initiator.c index 05a5b19..067cf0a
>> 100644
>> --- a/usr/initiator.c
>> +++ b/usr/initiator.c
>> @@ -543,8 +543,7 @@ static int iscsi_conn_connect(struct iscsi_conn *conn, 
>> queue_task_t *qtask)
>>      iscsi_sched_ev_context(ev_context, conn, 0, EV_CONN_POLL);
>>      log_debug(3, "Setting login timer %p timeout %d", &conn->login_timer,
>>                conn->login_timeout);
>> -    actor_timer(&conn->login_timer, conn->login_timeout * 1000,
>> -                iscsi_login_timedout, qtask);
>> +    queue_delayed_reopen(qtask, conn->login_timeout);
>>      return 0;
>> }
> 
> Patch is correct. Thanks.
> 
> I am just trying to think of a better name for queue_delayed_reopen or maybe 
> if we want to just add a actor_delete in iscsi_connect. When we call it 
> above, the name of the function is odd since we are not requeueing the reopn. 
> In this code path we use the login_timer to monitor the connect/login 
> process. When other callers of queue_delayed_reopen call it, they are reusing 
> the login_timer as a generic timer to retry connect/login.
> 
> Give me another day to think about it.
> 

-- 
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 post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.

Reply via email to