[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 04/11] libxl: add generic function to add device
On Tue, Jun 27, 2017 at 01:03:20PM +0300, Oleksandr Grytsov wrote: > From: Oleksandr Grytsov <oleksandr_grytsov@xxxxxxxx> > > Add libxl__device_add functio. > Almost all devices have similar libxl__device_xxxx_add function. > This generic function implements same functionality but > using the device handling framework. The device specific > part this is setting xen store configuration. This part > is moved to set_xenstore_config callback of the device framework. > > Signed-off-by: Oleksandr Grytsov <oleksandr_grytsov@xxxxxxxx> [...] > + > +void libxl__device_add(libxl__egc *egc, uint32_t domid, > + const struct libxl_device_type *dt, void *type, > + libxl__ao_device *aodev) > +{ > + STATE_AO_GC(aodev->ao); > + libxl__device *device; > + int rc; > + > + rc = dt->set_default(gc, domid, type); > + if (rc) goto out; > + > + GCNEW(device); > + rc = dt->to_device(gc, domid, type, device); > + if ( rc != 0 ) goto out; > + > + rc = libxl__device_exists(gc, XBT_NULL, device); > + if (rc < 0) goto out; > + if (rc == 1) { /* already exists in xenstore */ > + LOGD(ERROR, domid, "device already exists in xenstore"); > + aodev->action = LIBXL__DEVICE_ACTION_ADD; /* for error message */ > + rc = ERROR_DEVICE_EXISTS; > + goto out; > + } > + > + if (aodev->update_json) { > + rc = device_add_domain_config(gc, domid, dt, type); > + if (rc) goto out; > + } > + > + if (dt->set_xenstore_config) { > + rc = dt->set_xenstore_config(gc, domid, type); > + if (rc) goto out; > + } > + This has changed the locking hierarchy we define in libxl_internal.h. See libxl_internal.h:L2592. Either you need to preserve the hierarchy or you need to prove the correctness of the new approach. The former is probably easier. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |