On 1/12/15, 2:36 PM, Mike Christie wrote:
On 01/12/2015 01:59 PM, Andy Grover wrote:
An executing actor can call actor_schedule() (either with a zero or
nonzero delay) to run another actor. If the delay is zero then the new
actor will be run before the current invocation of actor_poll() exits.

Doh. My eyes must have been cross eyed at 2 that day. You are right.
Merged. Thanks.


Hey Andy,

This seems to add a regression. If we loose the connection to the target and it is not reachable, then we will do EV_CONN_POLL. The ep_poll will fail, reschedule and immediately run again like you described above, so it is like doing:

while (ep_poll() == 0)
        ;

CPU use then jumps since we are just doing that non stop.

To replicate just have us log into a LIO target, then shutdown the box running LIO. When it shuts down you will hit this problem.

I tried to just do:

        case EV_CONN_POLL:
-               actor_init(&ev_context->actor, session_conn_poll,
-                         ev_context);
-               actor_schedule(&ev_context->actor);
+               actor_timer(&ev_context->actor, 1, session_conn_poll,
+                           ev_context);
                break;

thinking it would retry the poll in a second, but it ends up taking login_timeout seconds instead. For some reason, the new timer I am trying to set is not getting set to before the existing login_timer in.

--
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.

Reply via email to