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

Re: [Xen-devel] [PATCH 2/2] 4.1.2 blktap2 cleanup fixes.



On Wed, 2012-11-07 at 02:07 +0000, Dr. Greg Wettstein wrote:
> ---------------------------------------------------------------------------
> The following patch when applied on top of:
> 
> libxl: attempt to cleanup tapdisk processes on disk backend destroy.
> 
> Establishes correct cleanup behavior for blktap devices.  This patch
> implements the release of the backend device before calling for
> the destruction of the userspace component of the blktap device.
> 
> Without this patch the kernel xen-blkback driver deadlocks with
> the blktap2 user control plane until the IPC channel is terminated by the
> timeout on the select() call.  This results in a noticeable delay
> in the termination of the guest and causes the blktap minor
> number which had been allocated to be orphaned.
> 
> Signed-off-by: Greg Wettstein <greg@xxxxxxxxxxxx>

Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

> diff -r b184698e0893 tools/libxl/libxl_blktap2.c
> --- a/tools/libxl/libxl_blktap2.c     Tue Nov 06 19:53:48 2012 -0600
> +++ b/tools/libxl/libxl_blktap2.c     Tue Nov 06 19:54:23 2012 -0600
> @@ -59,6 +59,7 @@ void libxl__device_destroy_tapdisk(libxl
>      char *path, *params, *type, *disk;
>      int err;
>      tap_list_t tap;
> +    libxl_ctx *ctx = libxl__gc_owner(gc);
>  
>      path = libxl__sprintf(gc, "%s/tapdisk-params", be_path);
>      if (!path) return;
> @@ -75,5 +76,11 @@ void libxl__device_destroy_tapdisk(libxl
>      err = tap_ctl_find(type, disk, &tap);
>      if (err < 0) return;
>  
> +    /*
> +     * Remove the instance of the backend device to avoid a deadlock with the
> +     * removal of the tap device.
> +     */
> +    xs_rm(ctx->xsh, XBT_NULL, be_path);
> +
>      tap_ctl_destroy(tap.id, tap.minor);
>  }
> diff -r b184698e0893 tools/libxl/libxl_device.c
> --- a/tools/libxl/libxl_device.c      Tue Nov 06 19:53:48 2012 -0600
> +++ b/tools/libxl/libxl_device.c      Tue Nov 06 19:54:23 2012 -0600
> @@ -250,8 +250,7 @@ int libxl__device_destroy(libxl_ctx *ctx
>      if (!state)
>          goto out;
>      if (atoi(state) != 4) {
> -        libxl__device_destroy_tapdisk(&gc, be_path);
> -        xs_rm(ctx->xsh, XBT_NULL, be_path);
> +     libxl__device_destroy_tapdisk(&gc, be_path);
>          goto out;
>      }
>  
> ---------------------------------------------------------------------------
> 
> As always,
> Dr. G.W. Wettstein, Ph.D.   Enjellic Systems Development, LLC.
> 4206 N. 19th Ave.           Specializing in information infra-structure
> Fargo, ND  58102            development.
> PH: 701-281-1686
> FAX: 701-281-3949           EMAIL: greg@xxxxxxxxxxxx
> ------------------------------------------------------------------------------
> "Fungus doesn't take a vacation."
>                                 -- Rob Pike
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel



_______________________________________________
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®.