[libvirt] [PATCH 3/5] qemu: domain: Store and restore autoCpuset to status XML

Andrea Bolognani abologna at redhat.com
Thu Jul 20 14:17:23 UTC 2017


On Thu, 2017-07-20 at 15:46 +0200, Peter Krempa wrote:
> > > -    virBufferAsprintf(buf, "<numad nodeset='%s'/>\n", nodeset);
> > > +    if (priv->autoCpuset &&
> > > +        !((cpuset = virBitmapFormat(priv->autoCpuset))))
> > > +        goto cleanup;
> > 
> > The previous implementation didn't format the <numad>
> > element at all if there was nodeset, whereas the new one
> > will always format it. You could add
> > 
> >     if (!nodeset && !cpuset)
> >         goto cleanup;
> 
> If you call virBitmapFormat on an empty or NULL bitmap you still get a
> (empty) string allocated so that condition is basically identical to the
> one that's already there due to how the bitmaps are formatted:
> 
>     if (!priv->autoNodeset && !priv->autoCpuset)
>         return 0;
> 
>     if (priv->autoNodeset &&
>         !((nodeset = virBitmapFormat(priv->autoNodeset))))
>         goto cleanup;
> 
>     if (priv->autoCpuset &&
>         !((cpuset = virBitmapFormat(priv->autoCpuset))))
>         goto cleanup;

Oh, you're right. Nevermind then.

> > > -    if (!nodeset)
> > > +    if (!nodeset && !cpuset)
> > >           return 0;
> > 
> > I don't think you want this hunk.
> > 
> > With the new condition, you will perform an early exit only
> > if both nodeset and cpuset are NULL; if nodeset is NULL but
> > cpuset isn't, the first call to virBitmapParse() a few lines
> > below will error out.
> 
> That shouldn't ever happen (tm) :D
> 
> I'll can add a condition that if nodeset is not in the XML the parsing
> will be skipped. So in that case only cpuset can be present (for future
> use).
> 
> I'll also add a note that accessing autoNodeset in the else branch of if
> (cpuset) is safe.

Works for me :)

-- 
Andrea Bolognani / Red Hat / Virtualization




More information about the libvir-list mailing list