[libvirt] [PATCH libvirt-glib 4/5] Add API for creating transient domains
Daniel P. Berrange
berrange at redhat.com
Tue Nov 22 13:48:38 UTC 2011
On Tue, Nov 22, 2011 at 02:07:23PM +0100, Christophe Fergeau wrote:
> Hey,
>
> On Tue, Nov 22, 2011 at 12:39:31PM +0000, Daniel P. Berrange wrote:
> > From: "Daniel P. Berrange" <berrange at redhat.com>
> >
> > ---
> > libvirt-gobject/libvirt-gobject-connection.c | 49 ++++++++++++++++++++++++++
> > libvirt-gobject/libvirt-gobject-connection.h | 4 ++
>
> No addition of the new function in libvirt-gobject.sym?
>
> > 2 files changed, 53 insertions(+), 0 deletions(-)
> >
> > diff --git a/libvirt-gobject/libvirt-gobject-connection.c b/libvirt-gobject/libvirt-gobject-connection.c
> > index f52b825..b6e7f3b 100644
> > --- a/libvirt-gobject/libvirt-gobject-connection.c
> > +++ b/libvirt-gobject/libvirt-gobject-connection.c
> > @@ -1164,6 +1164,10 @@ GVirStream *gvir_connection_get_stream(GVirConnection *self,
> > * gvir_connection_create_domain:
> > * @conn: the connection on which to create the dmain
>
> domain
>
> > * @conf: the configuration for the new domain
> > + *
> > + * Create the configuration file for a new persistent domain.
> > + * The returned domain will initially be in the shutoff state.
> > + *
> > * Returns: (transfer full): the newly created domain
> > */
> > GVirDomain *gvir_connection_create_domain(GVirConnection *conn,
> > @@ -1201,6 +1205,51 @@ GVirDomain *gvir_connection_create_domain(GVirConnection *conn,
> > }
> >
> > /**
> > + * gvir_connection_start_domain:
> > + * @conn: the connection on which to create the dmain
>
> Same here, domain
Cut + paste typos :-)
>
> > + * @conf: the configuration for the new domain
> > + *
> > + * Start a new transient domain without persistent configuration.
> > + * The returned domain will initially be running.
> > + *
> > + * Returns: (transfer full): the newly created domain
> > + */
> > +GVirDomain *gvir_connection_start_domain(GVirConnection *conn,
> > + GVirConfigDomain *conf,
> > + guint flags,
> > + GError **err)
> > +{
> > + const gchar *xml;
> > + virDomainPtr handle;
> > + GVirConnectionPrivate *priv = conn->priv;
> > +
> > + xml = gvir_config_object_to_xml(GVIR_CONFIG_OBJECT(conf));
>
> xml shouldn't be const and need to be g_freed when it's no longer needed.
Oooh, gvir_connection_create_domain has the same flaw. I'll fix
both.
> > +
> > + g_return_val_if_fail(xml != NULL, NULL);
> > +
> > + if (!(handle = virDomainCreateXML(priv->conn, xml, flags))) {
> > + *err = gvir_error_new_literal(GVIR_CONNECTION_ERROR,
> > + 0,
> > + "Failed to create domain");
> > + return NULL;
> > + }
> > +
> > + GVirDomain *domain;
> > +
> > + domain = GVIR_DOMAIN(g_object_new(GVIR_TYPE_DOMAIN,
> > + "handle", handle,
> > + NULL));
> > +
> > + g_mutex_lock(priv->lock);
> > + g_hash_table_insert(priv->domains,
> > + (gpointer)gvir_domain_get_uuid(domain),
> > + domain);
> > + g_mutex_unlock(priv->lock);
> > +
> > + return g_object_ref(domain);
>
> Here I'd do
> g_mutex_lock(priv->lock);
> g_hash_table_insert(priv->domains,
> (gpointer)gvir_domain_get_uuid(domain),
> g_object_ref(domain));
> g_mutex_unlock(priv->lock);
>
> return domain;
>
> to make it clearer that the hash table needs a ref on the object. The way
> it's written, I had to check how priv->domains is declared to make sure
> that wasn't an extra _ref.
Again this was a cut+past from gvir_connection_start_domain, so
I'll change both to the style you describe.
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