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

Re: [Xen-devel] [PATCH 01 of 10] libxl: Remove frontend and backend devices from xenstore after destroy



On Sat, 2011-06-04 at 00:30 +0100, Marek Marczykowski wrote:
> On 03.06.2011 10:03, Ian Campbell wrote:
> > Hi Marek,
> > 
> > Please can you add:
> > [diff]
> > showfunc = True
> > to your ~/.hgrc. It makes patches much easier to read.
> > 
> >  On Thu, 2011-06-02 at 23:35 +0100, Marek Marczykowski wrote:
> >> # HG changeset patch
> >> # User Marek Marczykowski <marmarek@xxxxxxxxxxxx>
> >> # Date 1306962865 -7200
> >> # Node ID e3a3f5cc95349e92b7cb8b1448e999ffc16bd060
> >> # Parent  43acc031eb24945973dffda2b7caf976993bbd5f
> >> libxl: Remove frontend and backend devices from xenstore after destroy
> >>
> >> Cleanup frontend and backend devices from xenstore for all dev types - not 
> >> only
> >> disks.
> >>
> >> Signed-off-by: Marek Marczykowski <marmarek@xxxxxxxxxxxx>
> > 
> > Thanks!
> > 
> > The whole device destroy/teardown path is a bit of a twisty maze of
> > confusingly named functions and parameters (e.g. force == !wait, destroy
> > vs delete vs remove etc). Any attempt to try and untangle things is most
> > welcome and I think this is a step in the right direction.
> > 
> >>
> >> diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
> >> --- a/tools/libxl/libxl.c
> >> +++ b/tools/libxl/libxl.c
> >> @@ -1065,8 +1065,6 @@
> >>      device.devid            = devid;
> >>      device.kind             = DEVICE_VBD;
> >>      rc = libxl__device_del(ctx, &device, wait);
> >> -    xs_rm(ctx->xsh, XBT_NULL, libxl__device_backend_path(&gc, &device));
> >> -    xs_rm(ctx->xsh, XBT_NULL, libxl__device_frontend_path(&gc, &device));
> >>      libxl__free_all(&gc);
> >>      return rc;
> >>  }
> >> diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
> >> --- a/tools/libxl/libxl_device.c
> >> +++ b/tools/libxl/libxl_device.c
> >> @@ -401,6 +401,8 @@
> >>          (void)wait_for_dev_destroy(ctx, &tv);
> >>      }
> >>  
> >> +    xs_rm(ctx->xsh, XBT_NULL, libxl__device_backend_path(&gc, dev));
> >> +    xs_rm(ctx->xsh, XBT_NULL, libxl__device_frontend_path(&gc, dev));
> > 
> > In the case where wait == true libxl__device_destroy will add a watch on
> > the be path and wait_for_dev_destroy will subsequently remove the path.
> 
> Only backend one...
> 
> > I think it would be better to add the xs_rm for be path to
> > libxl__device_destroy as the else clause to the !force which adds the
> > watch? 
> 
> Also - only backend one (libxl__device_destroy gets only backend path as
> parameter).
> 
> > I think this allow the other caller (libxl__devices_destroy) to
> > be simplified too since all that mucking around with the toremove
> > flexarray could be dropped.
> 
> What about frontend device in xenstore? In most cases only backend is
> removed. In wait_for_dev_destroy we don't know frontend patch (wheel,
> not exactly true, but not always easy). Perhaps there should be two
> watches - on backend AND on frontend (with writing "5" to frontend state
> also?)? Or backend should be removed as you suggested, but frontend as
> in my patch (after wait_for_dev_destroy if was called)?

My comments were only about the location of the rm of the backend path.

I think your original patch moved the rm of the frontend path to the
right place.

an.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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