[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 3/8] libxl: add a transaction parameter to libxl__device_generic_add
Stefano Stabellini writes ("[Xen-devel] [PATCH v4 3/8] libxl: add a transaction parameter to libxl__device_generic_add"): > Add a xs_transaction_t parameter to libxl__device_generic_add, if it is > XBT_NULL, allocate a proper one. ... > -int libxl__device_generic_add(libxl__gc *gc, libxl__device *device, > - char **bents, char **fents) > +int libxl__device_generic_add(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]; > + int create_transaction = t == XBT_NULL; This works. Another way to do it is to have a separate variable, something like this: xs_transaction_t our_transaction = t; and then later if (!t) { our_transaction = t = xs_transaction_start.... if (!t) error handling; } and when you commit it set our_transaction to 0 and on error exit if (our_transaction) xs_transaction_end(..., our_transaction, 1); I suggest this just because you may prefer to avoid separate boolean sentinel variables - I know I do. There is a difficulty in general with this function, which is that it contains an enormous number of unchecked xenstore operations. I'm not saying you need to fix this now, but if at a later point this were to be fixed, the function would need to get a proper error exit path which would have to destroy the transaction iff it was created. I mention this for completeness but you may want to transpose it into a comment somehow. Anyway, Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |