|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/6] libxl: introduce libxl__device_generic_add_t
On Tue, 27 Mar 2012, Ian Campbell wrote:
> On Tue, 2012-03-27 at 14:59 +0100, Stefano Stabellini wrote:
> > Introduce libxl__device_generic_add_t that takes an xs_transaction_t as
> > parameter.
> > Use libxl__device_generic_add_t to implement libxl__device_generic_add.
>
> I think it would be better to just change the existing API to add a
> transaction.
OK
> > Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> > ---
> > tools/libxl/libxl_device.c | 36 ++++++++++++++++++++++++++----------
> > tools/libxl/libxl_internal.h | 2 ++
> > 2 files changed, 28 insertions(+), 10 deletions(-)
> >
> > diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
> > index c2880e0..c6f9044 100644
> > --- a/tools/libxl/libxl_device.c
> > +++ b/tools/libxl/libxl_device.c
> > @@ -61,12 +61,37 @@ int libxl__parse_backend_path(libxl__gc *gc,
> > int libxl__device_generic_add(libxl__gc *gc, libxl__device *device,
> > char **bents, char **fents)
> > {
> > + int rc = 0;
> > + xs_transaction_t t;
> > + libxl_ctx *ctx = libxl__gc_owner(gc);
> > +
> > +retry_transaction:
> > + t = xs_transaction_start(ctx->xsh);
> > +
> > + rc = libxl__device_generic_add_t(gc, t, device, bents, fents);
> > +
> > + if (!xs_transaction_end(ctx->xsh, t, 0)) {
> > + if (errno == EAGAIN)
> > + goto retry_transaction;
> > + else
> > + LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "xs transaction
> > failed");
> > + }
> > + return rc;
> > +}
> > +
> > +int libxl__device_generic_add_t(libxl__gc *gc, xs_transaction_t t,
> > + libxl__device *device, char **bents, char **fents)
> > +{
> > libxl_ctx *ctx = libxl__gc_owner(gc);
> > char *frontend_path, *backend_path;
> > - xs_transaction_t t;
> > struct xs_permissions frontend_perms[2];
> > struct xs_permissions backend_perms[2];
> >
> > + if (t == XBT_NULL)
> > + /* we need a valid transaction: call libxl__device_generic_add
> > + * to create one for us */
> > + return libxl__device_generic_add(gc, device, bents, fents);
>
> This function will in turn start a new transaction and then call us
> straight back again, which is all a bit of a roundabout way to do
> things. Can't this just be a t = xs_transaction_start?
this goes away if we just have libxl__device_generic_add with the
additional paramter
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |