X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lnet%2Flnet%2Flib-eq.c;h=701352c7f4dc830ee65a19fad133f2ef1fc37cb8;hb=9e78291e0f1f0b12472d6a0b15eaf1aec8076ca1;hp=4ca84f3c8c7c52d504916e48382106dcf76c5e20;hpb=6869932b552ac705f411de3362f01bd50c1f6f7d;p=fs%2Flustre-release.git diff --git a/lnet/lnet/lib-eq.c b/lnet/lnet/lib-eq.c index 4ca84f3..701352c 100644 --- a/lnet/lnet/lib-eq.c +++ b/lnet/lnet/lib-eq.c @@ -219,6 +219,16 @@ LNetEQPoll (lnet_handle_eq_t *eventqs, int neq, int timeout_ms, LNET_LOCK(); for (;;) { +#ifndef __KERNEL__ + LNET_UNLOCK(); + + /* Recursion breaker */ + if (the_lnet.ln_rc_state == LNET_RC_STATE_RUNNING && + !LNetHandleIsEqual(eventqs[0], the_lnet.ln_rc_eqh)) + lnet_router_checker(); + + LNET_LOCK(); +#endif for (i = 0; i < neq; i++) { lnet_eq_t *eq = lnet_handle2eq(&eventqs[i]); @@ -256,8 +266,8 @@ LNetEQPoll (lnet_handle_eq_t *eventqs, int neq, int timeout_ms, cfs_waitq_timedwait(&wl, CFS_TASK_INTERRUPTIBLE, cfs_time_seconds(timeout_ms)/1000); cfs_duration_usec(cfs_time_sub(cfs_time_current(), now), - &tv); - timeout_ms -= tv.tv_sec * 1000 + tv.tv_usec / 1000; + &tv); + timeout_ms -= (int)(tv.tv_sec * 1000 + tv.tv_usec / 1000); if (timeout_ms < 0) timeout_ms = 0; }