On 01/20/2014 06:09 PM, Peter Krempa wrote: > We shouldn't access the domain definition while we are in the monitor > section as the domain is unlocked. Additionaly after we exit from the > monitor we need to check if the VM is still alive. Not doing so resulted > into crash if qemu exits while attempting to do a external VM snapshot. > --- > > Notes: > Version 1 was reported to break locking of a VM but withoit enough data > to reproduce/trace. > Version 2: > - changed some of the conditions so that proper cleanup paths are taken > - fixed returned error value in case the job can't be entered > > src/qemu/qemu_driver.c | 53 > ++++++++++++++++++++++++++++++++++++++------------ > 1 file changed, 41 insertions(+), 12 deletions(-) >
> @@ -12605,8 +12606,25 @@
> qemuDomainSnapshotCreateSingleDiskActive(virQEMUDriverPtr driver,
> + if (!actions) {
> + qemuDomainObjExitMonitor(driver, vm);
> + if (!virDomainObjIsActive(vm)) {
> + virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> + _("Domain crashed while taking the snapshot"));
> + ret = -1;
> + }
> + }
> +
You use 'Domain' here...
> @@ -12724,24 +12739,36 @@ qemuDomainSnapshotCreateDiskActive(virQEMUDriverPtr
> driver,
> if (actions) {
> - if (ret == 0)
> - ret = qemuMonitorTransaction(priv->mon, actions);
> + if (ret == 0) {
> + if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) {
> + ret = qemuMonitorTransaction(priv->mon, actions);
> + qemuDomainObjExitMonitor(driver, vm);
> + if (!virDomainObjIsActive(vm)) {
> + virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> + _("domain crashed while taking the
> snapshot"));
> + ret = -1;
> + }
> + } else {
and 'domain' here. It would be better to be consistent, if only because
translations are case-sensitive.
I'd suggest going with lowercase, as it seems to be used in most of the
snapshot errors.
Jan
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/libvir-list
