rx-avoid-unnecessary-wakeups-20011225

"This fixes a livelock condition introduced in my earlier
  resource starvation patch; apparently I had erred too far
  on the side of "wake up just in case".  The livelock bug
  is exhibited when running 10 fsstress processes at once;
  if many processes are waiting for a new Rx call, they get
  stuck in an uninterruptible kernel loop waking each other
  up."
This commit is contained in:
Nickolai Zeldovich 2001-12-25 18:13:20 +00:00 committed by Derrick Brashear
parent 28eefd7613
commit 3ea10ea353

View File

@ -1053,7 +1053,7 @@ struct rx_call *rx_NewCall(conn)
osi_rxSleep(conn); osi_rxSleep(conn);
#endif #endif
conn->makeCallWaiters--; conn->makeCallWaiters--;
}
/* /*
* Wake up anyone else who might be giving us a chance to * Wake up anyone else who might be giving us a chance to
* run (see code above that avoids resource starvation). * run (see code above that avoids resource starvation).
@ -1063,7 +1063,6 @@ struct rx_call *rx_NewCall(conn)
#else #else
osi_rxWakeup(conn); osi_rxWakeup(conn);
#endif #endif
}
CALL_HOLD(call, RX_CALL_REFCOUNT_BEGIN); CALL_HOLD(call, RX_CALL_REFCOUNT_BEGIN);