|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1 of 7 v2] blktap3/tapback: Introduce core defines and structure definitions
> On Fri, 2013-01-04 at 12:14 +0000, Thanos Makatos wrote:
> > +#define BUG_ON(_cond) \
> > + if (unlikely(_cond)) { \
> > + assert(0); \
>
> This is basically a fancy way to write "assert(!_cond)" I think? I
> don't
> imagine that the unlikely will make a measurable difference for you but
> the downside is that a clever assert will print out the condition, so
> you get
> assertion failed: 0
> instead of
> assertion failed: <_cond>
>
> So you might almost as well use either abort() or
> if (unlikely(_cond))
> assert(!_cond)
>
> (evaluating cond twice won't hurt much under the circumstances, and the
> compiler will probably optimise that anyway)
This #define shouldn't be there in the first place (that's the kernel's way),
assert(!_cond) should suffice.
>
> > + }
> > +
> > +/*
> > + * XenStore path components.
> > + *
> > + * To avoid confusion with blktap2, we'll use a new kind of device
> for libxl
> > + * defining it in tools/libxl/libxl_types_internal.idl. This will be
> done by
> > + * the patch that adds libxl support for blktap3. TODO When that
> patch is sent,
> > + * use the definition from there instead of hard-coding it here.
> > + */
> > +#define XENSTORE_BACKEND "backend"
> > +#define BLKTAP3_BACKEND_NAME "xenio"
>
> tapback?
Xenio is the back-end's name (e.g "vbd" in blktap2), so it's shouldn't be
strongly related to the daemon's name. In any case, at some point (hopefully
;)) blktap3 will become the default back-end and should use the "vbd" back-end
name, so I don't think we should bother finding a pretty, temporary name for
this.
>
> > +#define BLKTAP3_BACKEND_PATH
> XENSTORE_BACKEND"/"BLKTAP3_BACKEND_NAME
> > +#define BLKTAP3_BACKEND_TOKEN XENSTORE_BACKEND"-
> "BLKTAP3_BACKEND_NAME
> > +#define BLKTAP3_FRONTEND_TOKEN "otherend-state"
> > +#define BLKTAP3_SERIAL BLKTAP3_BACKEND_NAME"-serial"
>
> I'm not sure all of these are worth a #define, but I'm not yet sure
> what
> they are used for.
They're used for querying and parsing XenStore paths. IMO it's better, from a
defensive programming perspective, to avoid using the same string multiple
times as it makes it harder to maintain the code.
> > +#define FEAT_PERSIST "feature-persistent"
> > +/**
> > + * Iterates over all devices and returns the one for which the
> condition is
> > + * true.
> > + */
> > +#define tapback_backend_find_device(_device, _cond) \
> > +do {
> \
> > + vbd_t *__next;
> \
> > + int found = 0;
> \
> > + tapback_backend_for_each_device(_device, __next) { \
> > + if (_cond) {
> \
> > + found = 1;
> \
> > + break;
> \
> > + }
> \
> > + }
> \
> > + if (!found)
> \
> > + _device = NULL;
> \
> > +} while (0)
>
> Whitespace...
>
Fixed.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |