[libvirt] [PATCH] Fix race in starting transient VMs

Eric Blake eblake at redhat.com
Thu Oct 31 19:00:01 UTC 2013


On 10/31/2013 12:41 PM, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange" <berrange at redhat.com>
> 
> When starting a transient VM the first thing done is to check
> for duplicates. The check looks if there are any running VMs
> with the matching name/uuid. It explicitly allows there to
> be inactive VMs, so that a persistent VM can be temporarily
> booted with a different config.
> 

> 
> The fix is to only allow an existing inactive VM if it is
> marked as persistent.
> 
> Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
> ---
>  src/conf/domain_conf.c | 6 ++++++
>  1 file changed, 6 insertions(+)

ACK.  What a nasty bug to track down.

> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 51c4e29..454fbfe 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -2171,6 +2171,12 @@ virDomainObjListAddLocked(virDomainObjListPtr doms,
>                                 vm->def->name);
>                  goto error;
>              }
> +            if (!vm->persistent) {
> +                virReportError(VIR_ERR_OPERATION_INVALID,
> +                               _("domain is being started as '%s'"),

The error is a bit awkward (I ask to create a domain named 'foo', and
the error message is 'domain is being started as 'foo''), but no worse
than the error message a couple lines earlier ('domain is already active
as 'foo'').  Maybe "domain '%s' is already being started" reads better.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 621 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20131031/a45d2928/attachment-0001.sig>


More information about the libvir-list mailing list