On Mon, Jul 26, 2010 at 03:12:25AM +0200, Matthias Bolte wrote: > esxVI_WaitForTaskCompletion can take a UUID to lookup the > corresponding domain and check if the current task for it > is blocked by a question. It calls another function to do > this: esxVI_LookupAndHandleVirtualMachineQuestion looks up > the VirtualMachine and checks for a question. If there is > a question it calls esxVI_HandleVirtualMachineQuestion to > handle it. > > If there was no question or it has been answered the call > to esxVI_LookupAndHandleVirtualMachineQuestion returns 0. > If any error occurred during the lookup and answering > process -1 is returned. The problem with this is, that -1 > is also returned when there was no error but the question > could not be answered. So esxVI_WaitForTaskCompletion cannot > distinguish between this two situations and reports that a > question is blocking the task even when there was actually > another problem. > > This inherent problem didn't surface until vSphere 4.1 when > you try to define a new domain. The driver tries to lookup > the domain that is just in the process of being registered. > There seems to be some kind of race condition and the driver > manages to issue a lookup command before the ESX server was > able to register the domain. This used to work before. > > Due to the return value problem described above the driver > reported a false error message in that case. > > To solve this esxVI_WaitForTaskCompletion now takes an > additional occurrence parameter that describes whether or > not to expect the domain to be existent. Also add a new > parameter to esxVI_LookupAndHandleVirtualMachineQuestion > that allows to distinguish if the call returned -1 because > of an actual error or because the question could not be > answered. > --- > src/esx/esx_driver.c | 17 ++++++++++++++- > src/esx/esx_vi.c | 53 ++++++++++++++++++++++++++++++++++++------------- > src/esx/esx_vi.h | 7 ++++- > src/esx/esx_vmx.c | 4 +- > 4 files changed, 61 insertions(+), 20 deletions(-) Thanks for the detailed explanations ! ACK, Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list