[libvirt] [PATCH 2/2] maint: improve debug of libvirt-{qemu, lxc} apis

Daniel P. Berrange berrange at redhat.com
Thu Dec 19 16:37:56 UTC 2013


On Thu, Dec 19, 2013 at 09:35:23AM -0700, Eric Blake wrote:
> On 12/19/2013 08:17 AM, Daniel P. Berrange wrote:
> > On Thu, Dec 19, 2013 at 08:13:36AM -0700, Eric Blake wrote:
> >> diff --git a/src/libvirt_internal.h b/src/libvirt_internal.h
> >> index 115d8d1..b8c842d 100644
> >> --- a/src/libvirt_internal.h
> >> +++ b/src/libvirt_internal.h
> >> @@ -27,6 +27,113 @@
> >>
> >>  # include "internal.h"
> >>
> 
> >> +#define VIR_DOMAIN_DEBUG(...)                           \
> >> +    VIR_DOMAIN_DEBUG_EXPAND(VIR_DOMAIN_DEBUG_,          \
> >> +                            VIR_HAS_COMMA(__VA_ARGS__), \
> >> +                            __VA_ARGS__)
> > 
> > I'd suggest these go in  datatypes.h
> 
> Good idea.
> 
> > 
> > 
> >> +
> >> +/**
> >> + * VIR_UUID_DEBUG:
> >> + * @conn: connection
> >> + * @uuid: possibly null UUID array
> >> + */
> >> +#define VIR_UUID_DEBUG(conn, uuid)                              \
> >> +    do {                                                        \
> >> +        if (uuid) {                                             \
> >> +            char _uuidstr[VIR_UUID_STRING_BUFLEN];              \
> >> +            virUUIDFormat(uuid, _uuidstr);                      \
> >> +            VIR_DEBUG("conn=%p, uuid=%s", conn, _uuidstr);      \
> >> +        } else {                                                \
> >> +            VIR_DEBUG("conn=%p, uuid=(null)", conn);            \
> >> +        }                                                       \
> >> +    } while (0)
> > 
> > 
> > And this in viruuid.h
> 
> Sure, although VIR_DOMAIN_DEBUG requires the use of viruuid.h in the
> first place.
> 
> >> +#define virLibDomainSnapshotError(code, ...)                       \
> >> +    virReportErrorHelper(VIR_FROM_DOMAIN_SNAPSHOT, code, __FILE__, \
> >> +                         __FUNCTION__, __LINE__, __VA_ARGS__)
> > 
> > I'd venture to sugggest that these functions really have little
> > to no benefit / reason to exist. They aren't really simplifying
> > like, just making it different. They're historical baggage from
> > the old time when they were actual functions which did extra
> > sprintf formatting work. Could we just remove them ??
> 
> Perhaps, by using virReportError instead.  I can give that a try; but
> just looking at it, virReportError() hardcodes VIR_FROM_THIS as its
> first argument, whereas virLib*Error() sets different VIR_FROM_*
> categories.  Worse, we use multiple calls from within a single function
> (so continually redefining VIR_FROM_THIS would get painful) - for
> example, virDomainSnapshotCreateXML() uses both virLibDomainError()
> (VIR_FROM_DOMAIN) and virLibConnError() (VIR_FROM_NONE).

Oh true I'd forgotten it relied on VIR_FROM_THIS.

How about just renaming them s/Lib/Report/
 eg virLibDomainError ->  virReportDomainError and having
them in datatypes.h too. 

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