[libvirt] [PATCH v3 02/12] test: Adjust cleanup/error paths for nodedev test APIs

Erik Skultety eskultet at redhat.com
Thu Jun 29 14:40:18 UTC 2017


> > Just a minor nit, while I was checking where testDestroyVport gets called from
> > - testStoragePoolDestroy, there's a spot that could be fixed the same way.
> > Would you mind squashing this bit in as well?
> >
> > diff --git a/src/test/test_driver.c b/src/test/test_driver.c
> > index 6422ba8fb..a397364c7 100644
> > --- a/src/test/test_driver.c
> > +++ b/src/test/test_driver.c
> > @@ -4547,7 +4547,7 @@ testStoragePoolDestroy(virStoragePoolPtr pool)
> >      virObjectEventPtr event = NULL;
> >
> >      if (!(privpool = testStoragePoolObjFindByName(privconn, pool->name)))
> > -        goto cleanup;
> > +        return -1;
> >
>
> I don't mind changing this as well - although I probably have that in
> another patch somewhere dealing with storage tests.  Trying to keep
> nodedev with nodedev and storage with storage.

I figured, but this is where these two world clash, you know, calling nodedev
stuff from storage... I don't care if you fix in this one or in some other
storage related patch, just so we don't forget about that.

>
>
> >      if (!virStoragePoolObjIsActive(privpool)) {
> >          virReportError(VIR_ERR_OPERATION_INVALID,
> >
> >
> >
> > [...]
> >
> >> @@ -5424,27 +5408,26 @@ testNodeDeviceListCaps(virNodeDevicePtr dev, char **const names, int maxnames)
> >>      virNodeDeviceDefPtr def;
> >>      virNodeDevCapsDefPtr caps;
> >>      int ncaps = 0;
> >> -    int ret = -1;
> >>
> >>      if (!(obj = testNodeDeviceObjFindByName(driver, dev->name)))
> >> -        goto cleanup;
> >> +        return -1;
> >>      def = virNodeDeviceObjGetDef(obj);
> >>
> >>      for (caps = def->caps; caps && ncaps < maxnames; caps = caps->next) {
> >> -        if (VIR_STRDUP(names[ncaps++], virNodeDevCapTypeToString(caps->data.type)) < 0)
> >> -            goto cleanup;
> >> +        if (VIR_STRDUP(names[ncaps],
> >> +                       virNodeDevCapTypeToString(caps->data.type)) < 0)
> >> +            goto error;
> >> +        ncaps++;
> >
> > How about placing the increment to the iteration_expression segment of the
> > loop, aka at the end where the usual increment happens before condition
> > evaluation. Wondering whether there's a general technical term for the syntax
> > part of the loop between the parentheses.
> >
>
> Do you mean :
>
> (caps = def->caps; caps && ncaps < maxnames; caps = caps->next, ncaps++)
>
> ??
>
> If so, yuck. Since we're iterating on caps, I think what should be
> incremented is caps and not ncaps as well. Putting it after the

Well, if we only cared about the @caps in the evaluation condition, maybe, but
we also check @ncaps and I think it's pretty clear that ncaps are only
incremented when VIR_STRDUP passed, otherwise we would have dropped from the
loop in the first place. I don't intend to argue about this, as it's not a show
stopper, so I don't really care that much about that, I'm fine either way.

Erik




More information about the libvir-list mailing list