Re: [PATCH 2/2] bhyve: domainCreateXML

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



  Wojciech Macek wrote:

> Sure, I will split it into two separate commits. I must have messed up sth
> in commits, since even in head-email I described 3 patches...

That would be good, thanks!

> Regarding NULL, it is a little tricky. After running
> virDomainObjListRemove, the vm pointer has 0 references. Then, running
> virObjectUnlock causes libvirt segfault. To minimize changes, I used the
> solution from qemu: set vm to null and then check it inside cleanup. The
> "if (vm)" is just aesthetic - without it there was an awful warning on the
> console about null-pointer. I'd like to leave it as is, or remove
> "vm=NULL;" and insert virObjectRef/virObjectUnref pair instead.

Yeah, looks like you're right, sorry for the confusion. 

> What do you mean by ACL check? Do you think the check is unnecessary, or
> just should be placed earlier?

As for the ACL... 

> > > +static virDomainPtr
> > > +bhyveDomainCreateXML(virConnectPtr conn,
> > > +                     const char *xml,
> > > +                     unsigned int flags)
> > > +{
> > > +    bhyveConnPtr privconn = conn->privateData;
> > > +    virDomainPtr dom = NULL;
> > > +    virDomainDefPtr def = NULL;
> > > +    virDomainObjPtr vm = NULL;
> > > +    virCapsPtr caps = NULL;
> > > +    int ret;
> > > +    unsigned int start_flags = 0;
> > > +
> > > +    virCheckFlags(VIR_DOMAIN_START_AUTODESTROY, NULL);
> > > +
> > > +    if (flags & VIR_DOMAIN_START_AUTODESTROY)
> > > +        start_flags |= VIR_BHYVE_PROCESS_START_AUTODESTROY;
> > > +
> > > +    caps = bhyveDriverGetCapabilities(privconn);
> > > +    if (!caps)
> > > +        return NULL;
> > > +
> > > +    if ((def = virDomainDefParseString(xml, caps, privconn->xmlopt,
> > > +                                       1 << VIR_DOMAIN_VIRT_BHYVE,
> > > +                                       VIR_DOMAIN_XML_INACTIVE)) ==
> > NULL)
> > > +        goto cleanup;
> > > +
> > > +    if (virDomainCreateXMLEnsureACL(conn, def) < 0)

We check it here...

> > > +        goto cleanup;
> > > +
> > > +    if (!(vm = virDomainObjListAdd(privconn->domains, def,
> > > +                                   privconn->xmlopt,
> > > +                                   0, NULL)))
> > > +        goto cleanup;
> > > +    def = NULL;
> > > +    vm->persistent = 0;
> > > +
> > > +    dom = virGetDomain(conn, vm->def->name, vm->def->uuid);
> > > +    if (!dom)
> > > +        goto cleanup;
> > > +
> > > +    dom->id = vm->def->id;
> > > +
> > > +    if (flags & VIR_DOMAIN_START_AUTODESTROY)
> > > +        start_flags |= VIR_BHYVE_PROCESS_START_AUTODESTROY;
> > > +
> > > +    if (virDomainCreateWithFlagsEnsureACL(dom->conn, vm->def) < 0)
> > > +            goto cleanup;

Do we need it here again?

Roman Bogorodskiy

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]