[libvirt] [PATCH 1/3] qemu: always call qemuInterfaceStartDevices() when starting CPUs

Matthew Rosato mjrosato at linux.vnet.ibm.com
Fri Dec 12 19:03:41 UTC 2014


On 12/12/2014 11:34 AM, Laine Stump wrote:
> The patch that added qemuInterfaceStartDevices() (upstream commit
> 82977058f5b1d143a355079900029e9cbfee2fe4) had an extra conditional to
> prevent calling it if the reason for starting the CPUs was
> VIR_DOMAIN_RUNNING_UNPAUSED or VIR_DOMAIN_RUNNING_SAVE_CANCELED.  This
> was put in by the author as the result of a reviewer asking if it was
> necessary to ifup the interfaces in *all* occasions (because these
> were the two cases where the CPU would have already been started (and
> stopped) once, so the interface would already be ifup'ed).
> 
> It turns out that, as long as there is no corresponding
> qemuInterfaceStopDevices() to ifdown the interfaces anytime the CPUs
> are stopped, neglecting to ifup when reason is RUNNING_UNPAUSED or
> RUNNING_SAVE_CANCELED doesn't cause any problems (because it just
> happens that the interface will have already been ifup'ed by a prior
> call when the CPU was previously started for some other reason).
> 
> However, it also doesn't *help*, and there will soon be a
> qemuInterfaceStopDevices() function which *will* ifdown these
> interfaces when the guest CPUs are stopped, and once that is done, the
> interfaces will be left down in some cases when they should be up (for
> example, if a domain is paused and then unpaused).
> 
> So, this patch is removing the condition in favor of always calling
> qemuInterfaeStartDevices() when the guest CPUs are started.
> 
> This patch (and the aforementioned patch) resolve:
> 
>   https://bugzilla.redhat.com/show_bug.cgi?id=1081461
> ---
>  src/qemu/qemu_process.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
> index ab4df9b..0028283 100644
> --- a/src/qemu/qemu_process.c
> +++ b/src/qemu/qemu_process.c
> @@ -3126,9 +3126,7 @@ qemuProcessStartCPUs(virQEMUDriverPtr driver, virDomainObjPtr vm,
>      virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
> 
>      /* Bring up netdevs before starting CPUs */
> -    if (reason != VIR_DOMAIN_RUNNING_UNPAUSED &&
> -        reason != VIR_DOMAIN_RUNNING_SAVE_CANCELED &&
> -        qemuInterfaceStartDevices(vm->def) < 0)
> +    if (qemuInterfaceStartDevices(vm->def) < 0)
>         goto cleanup;
> 
>      VIR_DEBUG("Using lock state '%s'", NULLSTR(priv->lockState));
> 

I agreed to this in a separate thread & code looks good so:

Reviewed by: Matthew Rosato <mjrosato at linux.vnet.ibm.com>




More information about the libvir-list mailing list