[libvirt] [PATCH 1/2] libxl: support syntax <interface type="hostdev">

Chun Yan Liu cyliu at suse.com
Mon May 12 02:52:24 UTC 2014



>>> On 5/10/2014 at 06:18 AM, in message <536D541D.5040107 at suse.com>, Jim Fehlig
<jfehlig at suse.com> wrote: 
> Chunyan Liu wrote: 
> > Signed-off-by: Chunyan Liu <cyliu at suse.com> 
> >    
>  
> A while back when testing Chunyan's "common hostdev library" series, I 
> mentioned that <interface type='hostdev'> was not working with the libxl 
> driver.  Chunyan later privately sent a "v1" of this patch for testing 
> in my setup.  In addition to testing, I provided some private comments.  
> I see those have been incorporated in this patch and functionally it 
> looks good, but I do have one additional question about the commit 
> message... 
>  
> > --- 
> >  src/libxl/libxl_conf.c | 16 +++++++++++----- 
> >  1 file changed, 11 insertions(+), 5 deletions(-) 
> > 
> > diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c 
> > index 298c8a1..b7fed7f 100644 
> > --- a/src/libxl/libxl_conf.c 
> > +++ b/src/libxl/libxl_conf.c 
> > @@ -921,25 +921,31 @@ static int 
> >  libxlMakeNicList(virDomainDefPtr def,  libxl_domain_config *d_config) 
> >  { 
> >      virDomainNetDefPtr *l_nics = def->nets; 
> > -    int nnics = def->nnets; 
> > +    size_t nnics = def->nnets; 
> >      libxl_device_nic *x_nics; 
> > -    size_t i; 
> > +    size_t i, nvnics = 0; 
> >   
> >      if (VIR_ALLOC_N(x_nics, nnics) < 0) 
> >          return -1; 
> >   
> >      for (i = 0; i < nnics; i++) { 
> > -        if (libxlMakeNic(def, l_nics[i], &x_nics[i])) 
> > +        if (l_nics[i]->type == VIR_DOMAIN_NET_TYPE_HOSTDEV) 
> > +            continue; 
> >    
>  
> After looking at this again, it seems we are really *fixing* <interface 
> type='hostdev'>.  The driver already supports creating the hostdev 
> device, but without this patch a libxl_device_nic is created too.  Is 
> that a fair statement?  If so, the commit message should be changed to 
> reflect this.  Thanks! 

A NET_TYPE_HOSTDEV device is really a hostdev device, the driver will create
a hostdev device for it, so no need to create a libxl_device_nic again. Before 
this patch, it tried to call libxlMakeNic to create a libxl_device_nic for it but
failed since NET_TYPE_HOSTDEV is not supported there.

I'll add this to commit message. Is that OK?

- Chunyan

>  
> Regards, 
> Jim 
>  
> > + 
> > +        if (libxlMakeNic(def, l_nics[i], &x_nics[nvnics])) 
> >              goto error; 
> >          /* 
> >           * The devid (at least right now) will not get initialized by 
> >           * libxl in the setup case but is required for starting the 
> >           * device-model. 
> >           */ 
> > -        if (x_nics[i].devid < 0) 
> > -            x_nics[i].devid = i; 
> > +        if (x_nics[nvnics].devid < 0) 
> > +            x_nics[nvnics].devid = nvnics; 
> > + 
> > +        nvnics++; 
> >      } 
> >   
> > +    VIR_SHRINK_N(x_nics, nnics, nnics - nvnics); 
> >      d_config->nics = x_nics; 
> >      d_config->num_nics = nnics; 
> >   
> >    
>  






More information about the libvir-list mailing list