[libvirt] [PATCH 4/5] qemu: support starting persistent domain paused

Daniel P. Berrange berrange at redhat.com
Thu Jun 10 17:59:38 UTC 2010


On Thu, Jun 10, 2010 at 11:16:12AM -0600, Eric Blake wrote:
> Match earlier change for qemu pause support with virDomainCreateXML.
> 
> * src/qemu/qemu_driver.c (qemudDomainObjStart): Add parameter; all
> callers changed.
> (qemudDomainStartWithFlags): Implement flag support.
> ---
> 
> Question: should qemudDomainObjStart take an 'unsigned int flags'
> instead of 'bool start_paused', in case we want to support further
> flags in the future?
> 
>  src/qemu/qemu_driver.c |   16 +++++++++-------
>  1 files changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 13a36ee..df04ea1 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -148,7 +148,8 @@ static void qemuDomainEventQueue(struct qemud_driver *driver,
> 
>  static int qemudDomainObjStart(virConnectPtr conn,
>                                 struct qemud_driver *driver,
> -                               virDomainObjPtr vm);
> +                               virDomainObjPtr vm,
> +                               bool start_paused);
> 
>  static int qemudStartVMDaemon(virConnectPtr conn,
>                                struct qemud_driver *driver,
> @@ -643,7 +644,7 @@ qemuAutostartDomain(void *payload, const char *name ATTRIBUTE_UNUSED, void *opaq
>      } else {
>          if (vm->autostart &&
>              !virDomainObjIsActive(vm) &&
> -            qemudDomainObjStart(data->conn, data->driver, vm) < 0) {
> +            qemudDomainObjStart(data->conn, data->driver, vm, false) < 0) {
>              err = virGetLastError();
>              VIR_ERROR(_("Failed to autostart VM '%s': %s"),
>                        vm->def->name,
> @@ -6685,7 +6686,8 @@ static int qemudNumDefinedDomains(virConnectPtr conn) {
> 
>  static int qemudDomainObjStart(virConnectPtr conn,
>                                 struct qemud_driver *driver,
> -                               virDomainObjPtr vm)
> +                               virDomainObjPtr vm,
> +                               bool start_paused)
>  {
>      int ret = -1;
>      char *managed_save;
> @@ -6706,7 +6708,7 @@ static int qemudDomainObjStart(virConnectPtr conn,
>              goto cleanup;
>      }
> 
> -    ret = qemudStartVMDaemon(conn, driver, vm, NULL, false, -1, NULL);
> +    ret = qemudStartVMDaemon(conn, driver, vm, NULL, start_paused, -1, NULL);
>      if (ret != -1) {
>          virDomainEventPtr event =
>              virDomainEventNewFromObj(vm,
> @@ -6728,8 +6730,7 @@ qemudDomainStartWithFlags(virDomainPtr dom, unsigned int flags)
>      virDomainObjPtr vm;
>      int ret = -1;
> 
> -    /* XXX: Support VIR_DOMAIN_START_PAUSED */
> -    virCheckFlags(0, -1);
> +    virCheckFlags(VIR_DOMAIN_START_PAUSED, -1);
> 
>      qemuDriverLock(driver);
>      vm = virDomainFindByUUID(&driver->domains, dom->uuid);
> @@ -6751,7 +6752,8 @@ qemudDomainStartWithFlags(virDomainPtr dom, unsigned int flags)
>          goto endjob;
>      }
> 
> -    ret = qemudDomainObjStart(dom->conn, driver, vm);
> +    ret = qemudDomainObjStart(dom->conn, driver, vm,
> +                              (flags & VIR_DOMAIN_START_PAUSED) != 0);
> 
>  endjob:
>      if (qemuDomainObjEndJob(vm) == 0)

ACK

Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org        -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list