On 08/26/2014 11:28 AM, Peter Krempa wrote: > On 08/26/14 18:49, Eric Blake wrote: >> On 08/26/2014 08:14 AM, Peter Krempa wrote: > > .... > >> >> Would it make sense for @flags to provide the same filtering as >> virConnectListAllDomains(), for selecting a subset of domains to get >> stats on? But can definitely be added later. > > I already thought about implementing the filtering capability for this > function although I doubt that all of the filtering flags may be useful > here. > > Requesting stats for a machine that has (or doesn't have) snapshot > doesn't seem useful at all.
True, not all of the listing filters make as much sense here. At any
rate, adding filtering as a later extension is a fine approach; and we
can always play it by ear according to demand.
>>
>> virCheckNonNullArg(retStats)? Matters depending on whether you plan to
>> allow NULL retStats across RPC.
>
> Yep we always want to have retStats. I forgot to add the check.
Okay, I did my review of 2/5 before seeing this. But there were still
some things to clean up there as a result of enforcing this requirement.
>>> + virResetLastError();
>>> +
>>> + if (!*doms) {
>>
>> Missing virCheckNonNullArgReturn(doms, -1) prior to dereferencing *doms.
>> (I would have suggested virCheckNonNullArgGoto(doms, error), except
>> that the error label only works if we have validated the connection).
>>
>>> + virReportError(VIR_ERR_INVALID_ARG,
>>> + _("doms array in %s must contain at least one
>>> domain"),
>>> + __FUNCTION__);
>>> + goto cleanup;
>>
>> Ouch. You can't use the cleanup label unless you know the conn is
>> valid, but you don't validate the conn until...
>>
>
> Actually you can. The function that validates "conn" calls the same
> error dispatching function with NULL argument. Exactly what will happen
> here.
Ah, I was getting confused with our typical uses, which look somewhat like:
cleanup:
if (ret < 0)
virDispatchError(dom->conn);
where we CANNOT dereference dom if it didn't validate; but in your case,
you made sure the local 'conn' is either NULL or grabbed from a
validated dom, and virDispatchError(NULL) does work. Okay, false
negative on my side.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/libvir-list
