Commit fd06692544 tried to fix
a race condition in

  commit fa9595003d
  Author: Daniel P. Berrange <berrange@redhat.com>
  Date:   Fri Nov 11 15:28:41 2011 +0000

    Explicitly track whether the buck is held in remote client

Unfortunately there is a second race condition whereby the
event loop can trigger due to incoming data to read. Revert
this fix, so a complete fix for the problem can be cleanly
applied

* src/rpc/virnetclient.c: Revert fd06692544
This commit is contained in:
Daniel P. Berrange 2011-12-07 14:46:38 +00:00 committed by Daniel Veillard
parent 284230199a
commit 50a4f49c19

View File

@ -1545,7 +1545,6 @@ static int virNetClientIO(virNetClientPtr client,
virNetClientCallQueue(&client->waitDispatch, thiscall);
/* Check to see if another thread is dispatching */
recheck:
if (client->haveTheBuck) {
char ignore = 1;
@ -1593,13 +1592,7 @@ recheck:
goto cleanup;
}
/* Grr, someone might have passed the buck onto us ... */
/* We need to re-check if the buck has been passed to this thread
* as this thread might have been signalled to wake up, but another
* call might acquire the lock before this thread manages to wake up.
* This could cause that two threads claim they have the buck */
goto recheck;
/* Grr, someone passed the buck onto us ... */
}
VIR_DEBUG("We have the buck %p %p", client->waitDispatch, thiscall);