[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH V3 3/6] libxl: add pvusb API



On Wed, 2015-05-20 at 10:04 +0100, Wei Liu wrote:
> On Mon, May 18, 2015 at 09:20:43PM -0600, Chun Yan Liu wrote:
> [...]
> > >  
> > > > +    for (;;) { 
> > > > +        rc = libxl__xs_transaction_start(gc, &t); 
> > > > +        if (rc) goto out; 
> > > > + 
> > > > +        rc = libxl__device_exists(gc, t, device); 
> > > > +        if (rc < 0) goto out; 
> > > > +        if (rc == 1) { 
> > > > +            /* already exists in xenstore */ 
> > > > +            LOG(ERROR, "device already exists in xenstore"); 
> > > > +            rc = ERROR_DEVICE_EXISTS; 
> > > > +            goto out; 
> > > > +        } 
> > > > + 
> > > > +        rc = libxl__set_domain_configuration(gc, domid, &d_config); 
> > > > +        if (rc) goto out; 
> > > > + 
> > > > +        libxl__device_generic_add(gc, t, device, 
> > > > +                                  libxl__xs_kvs_of_flexarray(gc, back, 
> > > > +                                                             
> > > > back->count), 
> > > > +                                  libxl__xs_kvs_of_flexarray(gc, 
> > > > front, 
> > > > +                                                             
> > > > front->count), 
> > > > +                                  NULL); 
> > > > +        libxl__usbport_add_xenstore(gc, t, domid, usbctrl); 
> > > > +        rc = libxl__xs_transaction_commit(gc, &t); 
> > > > +        if (!rc) break; 
> > > > +        if (rc < 0) goto out; 
> > > > +    } 
> > > > + 
> > >  
> > > You don't have aodev so you cannot check update_json. Maybe you need 
> > > aodev? 
> > >  
> > > That field update_json is set to true when doing hotplug. It's set to 
> > > false during domain creation. 
> > >  
> > > The same comment applies to other add functions as well.
> > 
> > Thanks, I'm updating that. But maybe like pci_add and pci_remove functions,
> > will add a 'starting' flag to indicate hotplug or creation.
> > Looking at DEFINE_DEVICE_ADD and DEFINE_DEVICE_REMOVE, usbctrl_add
> > and usb_add can use DEFINE_DEVICE_ADD; but usbctrl_remove and usb_remove
> > cannot use DEFINE_DEVICE_REMOVE directly, need some extra handling. So,
> > finally turned to not use these macros but refer to pci functions.
> > 
> 
> TBH I prefer to have only one way to deal with devices.  I personally
> prefer the async style that every other devices use. Maybe that's just
> because I mostly worked with those.
> 
> I don't know the full history of libxl_pci.c so I will wait for Ian and
> Ian's comments on which way to go.

libxl_pci.c should not be used as an example of the right way to do
things (to say the least).

> I think one merit of determining whether to use sync or async is that
> whether the operation is long running (slow). Long running one should be
> asyn.  I guess usb passthrough is not slow so we are probably fine in
> this regard.

Device add/remove is expected to be async at least at the public API
level , all the others appear to be and it seems logical to me that they
would be.



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.