[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V14 4/6] libxl: add pvusb API
>>> On 2/29/2016 at 06:14 PM, in message <56D419F6.8030704@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx> wrote: > On 26/02/16 12:09, Ian Jackson wrote: > > George Dunlap writes ("Re: [Xen-devel] [PATCH V14 4/6] libxl: add pvusb > API"): > >> On Fri, Feb 19, 2016 at 10:39 AM, Chunyan Liu <cyliu@xxxxxxxx> wrote: > >>> + [...] > >> > >> So I see below that you're calling this before removing things from > >> xenstore, so that if any of these fail, the user can still call "xl > >> usb-remove" to retry. > >> > >> Unfortunately, since you reassign interfaces to the original driver > >> before all interfaces are de-assigned from usbback, you can end up in > >> a situation where the device is partially re-plugged into the original > >> drivers, partially still assigned to pciback. > >> > >> I think this whole process should be three steps: > >> > >> 1. Unassign all interfaces from usbback, stopping and returning an > >> error as soon as one attempt fails > >> > >> 2. Remove the pvusb xenstore nodes (stopping and returning an error if it > fails) > >> > >> 3. Attempt to re-assign all interfaces to the original drivers, > >> stopping and returning an error as soon as one attempt fails. I'll update codes to this order and post. -Chunyan > > > > This seems like a good plan to me. > > > > (Making 3 after 2 re-attemptable would mean that the original driver > > information needs to be saved in a different location in xenstore to > > the pvusb control nodes, but that is not a problem.) > > > >> * If one of the re-assignments fail, then the user will have to reload > >> the drivers, reboot, or mess around with sysfs to fix things. > >> *However*, this avoids a scenario where a user is completely unable to > >> remove a device from a domain because of a buggy driver. > > > > Right. > > > >> I realize this falls short of the "crash-only" design IanJ suggested > >> we try to do, but I think that in this case the work required to do > >> such a design would be a lot more work than the benefit it gives us. > > > > I think what you have above is indeed crash-only. You can tell by all > > the "if any error occurs, stop immediately". > > > > The only wrinkle is that the obvious implementation reads the old > > bindings from xenstore between 1 and 2, deletes the information from > > xenstore in 2, and uses that information in step 3, which is cheating > > (and leads to the sysfs-wrangling-required state). But that is quite > > easy to avoid: > > - record the old driver bindings somewhere in xenstore (keyed by > > the physical host device, not the guest domain) > > - provide a libxl call and corresponding xl command which attempts > > to rebind > > The re-bind information is already stored in a different location, keyed > by physical host device. :-) (Search for uses of USBBACK_INFO_PATH.) > > But we would, as you say, need to add a separate function/command for > doing clean-up (simply calling xl usb-detach on the virtual device again > doesn't make much sense, since the virtual devices no longer shows up in > xl usb-list). Since we don't have another such command to copy, we'd be > inventing a new one, which means thinking very carefully about the > design of the interface (since we'd want future such functions to follow > this precedent if possible), &c &c, so... > > > But, FAOD, I do not want to block this patch until such a thing is > > implemented. I think it is sufficient to document the existence of > > the awkward state, and the likely workarounds. > > Great, thanks. :-) > > -George > > > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |