[libvirt] [PATCH 24/40] Simplify the Xen domain start driver method

Daniel P. Berrange berrange at redhat.com
Thu May 9 11:48:38 UTC 2013


On Wed, May 08, 2013 at 04:40:04PM -0600, Jim Fehlig wrote:
> Daniel P. Berrange wrote:
> > From: "Daniel P. Berrange" <berrange at redhat.com>
> >
> > Directly call either the XenD or XM driver when starting
> > a persistent domain
> >
> > Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
> > ---
> >  src/xen/xen_driver.c    | 20 +++++++-------------
> >  src/xen/xen_driver.h    |  1 -
> >  src/xen/xend_internal.c | 20 +-------------------
> >  src/xen/xm_internal.c   |  4 ----
> >  4 files changed, 8 insertions(+), 37 deletions(-)

> > diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c
> > index addc547..dcd31de 100644
> > --- a/src/xen/xend_internal.c
> > +++ b/src/xen/xend_internal.c
> > @@ -2899,24 +2899,7 @@ xenDaemonDomainDefineXML(virConnectPtr conn, const char *xmlDesc)
> >  int
> >  xenDaemonDomainCreate(virDomainPtr domain)
> >  {
> > -    xenUnifiedPrivatePtr priv = domain->conn->privateData;
> > -    int ret;
> > -    virDomainPtr tmp;
> > -
> > -    if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
> > -        return -1;
> > -
> > -    ret = xend_op(domain->conn, domain->name, "op", "start", NULL);
> > -
> > -    if (ret != -1) {
> > -        /* Need to force a refresh of this object's ID */
> > -        tmp = virDomainLookupByName(domain->conn, domain->name);
> > -        if (tmp) {
> > -            domain->id = tmp->id;
> > -            virDomainFree(tmp);
> > -        }
> > -    }
> >   
> 
> Should this bit about updating the domain id be removed? Will the dom id
> remain at -1? If the id needs updated, it should probably be retrieved
> directly from xend.

Doh, I thought it was obsolete, but I was smoking crack. I'm
squashing in the following


@@ -2899,7 +2899,18 @@ xenDaemonDomainDefineXML(virConnectPtr conn, const char *xmlDesc)
 int
 xenDaemonDomainCreate(virDomainPtr domain)
 {
-    return xend_op(domain->conn, domain->name, "op", "start", NULL);
+    int ret;
+
+    ret = xend_op(domain->conn, domain->name, "op", "start", NULL);
+
+    if (ret == 0) {
+        int id = xenDaemonDomainLookupByName_ids(domain->conn, domain->name,
+                                                 domain->uuid);
+        if (id > 0)
+            domain->id = id;
+    }
+
+    return ret;
 }
 
 int


Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list