mirror of
https://git.openafs.org/openafs.git
synced 2025-01-22 17:00:15 +00:00
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:
parent
28eefd7613
commit
3ea10ea353
19
src/rx/rx.c
19
src/rx/rx.c
@ -1053,17 +1053,16 @@ struct rx_call *rx_NewCall(conn)
|
||||
osi_rxSleep(conn);
|
||||
#endif
|
||||
conn->makeCallWaiters--;
|
||||
|
||||
/*
|
||||
* Wake up anyone else who might be giving us a chance to
|
||||
* run (see code above that avoids resource starvation).
|
||||
*/
|
||||
#ifdef RX_ENABLE_LOCKS
|
||||
CV_BROADCAST(&conn->conn_call_cv);
|
||||
#else
|
||||
osi_rxWakeup(conn);
|
||||
#endif
|
||||
}
|
||||
/*
|
||||
* Wake up anyone else who might be giving us a chance to
|
||||
* run (see code above that avoids resource starvation).
|
||||
*/
|
||||
#ifdef RX_ENABLE_LOCKS
|
||||
CV_BROADCAST(&conn->conn_call_cv);
|
||||
#else
|
||||
osi_rxWakeup(conn);
|
||||
#endif
|
||||
|
||||
CALL_HOLD(call, RX_CALL_REFCOUNT_BEGIN);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user