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.
