On 25.03.2014 16:46, Daniel P. Berrange wrote: > On Tue, Mar 25, 2014 at 04:42:25PM +0100, Stefan Bader wrote: >> On 25.03.2014 16:36, Daniel P. Berrange wrote: >>> On Tue, Mar 25, 2014 at 04:22:54PM +0100, Stefan Bader wrote: >>>> This started off with some regression testing after going forward to Xen-4.4. We >>>> currently would pair that with a libvirt version 1.2.2 and right now operations >>>> through virsh seem to be working (mostly) well. But when using virt-manager (not >>>> the most up-to-date versions but some combinations that quite likely will occur >>>> (0.9.1 and 0.9.5)) there are some issues. >>>> >>>> Two symptoms seem to be caused by the same underlying problem which is caused by >>>> the way virt-manager interacts with libvirt. That seems to be that virt-manager >>>> acquires a reference to virDomainPtr only once and then uses that for subsequent >>>> call. This is a problem because both virDomainPtr object and virDomainObjPtr >>>> objects contains a domid but only the latter gets updated. >>>> >>>> So both, creating a new guest (which must be a define step and then use the >>>> handle to start the guest) as well as rebooting a guest cause problems for >>>> virt-manager. Mainly because of libxlDomainGetInfo() which retrieves the >>>> virDomainObjPtr for a given virDommainPtr. Then checks the domain object to be >>>> active or not but uses the domid from the domain to call into libxl: >>>> >>>> if (!(vm = libxlDomObjFromDomain(dom))) >>>> goto cleanup; >>>> ... >>>> if (!virDomainObjIsActive(vm)) { >>>> info->cpuTime = 0; >>>> info->memory = vm->def->mem.cur_balloon; >>>> info->maxMem = vm->def->mem.max_balloon; >>>> } else { >>>> if (libxl_domain_info(priv->ctx, &d_info, dom->id) != 0) { >>>> >>>> This fails either with dom->id being -1 (still) or using the old id from before >>>> the reboot. A dirty hack seems to avoid this: >>> >>> Yep, this is a pretty commonly hit problem. The solution is to *never* >>> access dom->id in the driver code at all. eg In this code snippet above >>> you could use vm->def->id instead which should be up to date. >> >> OK, it just seems for something that should not be done, it is done plenty of >> times in the libxl_driver codebase right now. At least pause and unpause seem to >> do the same... > > I expect those pretty much all need to be fixed All-right, thanks for confirming. :) Will work on that. -Stefan > > Regards, > Daniel >
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list