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

Re: [Xen-devel] [PATCH 09 of 13 RFC] libxl: destroy devices before device model



2012/1/26 Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>:
> On Wed, 18 Jan 2012, Roger Pau Monne wrote:
>> # HG changeset patch
>> # User Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>
>> # Date 1326728472 -3600
>> # Node ID b5d63cf90d4ef8d222ae282e279b90b7f73f18c3
>> # Parent Â5849bf7c4507edbe900de00332f1218de2d9f45f
>> libxl: destroy devices before device model
>>
>> Destroying the device model before unplugging the devices prevented
>> from doing a clean unplug, since libxl was waiting for dm Âdevices
>> to shutdown when the userspace process was already killed.
>
> I think that this change is correct but have you tested it with any
> backends running in qemu?

I've tried with qdisk and console backends with a PV DomU (I will try
with a HVM guest too, tomorrow morning), anyway, this patch it's quite
useless on it's own, it's the combination of this one and:

qemu: react to XenbusStateClosing

that makes qemu device model destruction successful (devices are
disconnected before backend removal). BTW Xen Qemu code in qemu-xen is
an indentation mess, I've tried to keep it as similar as possible.

>
>> Signed-off-by: Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>
>>
>> diff -r 5849bf7c4507 -r b5d63cf90d4e tools/libxl/libxl.c
>> --- a/tools/libxl/libxl.c   Mon Jan 16 16:40:40 2012 +0100
>> +++ b/tools/libxl/libxl.c   Mon Jan 16 16:41:12 2012 +0100
>> @@ -802,15 +802,15 @@ int libxl_domain_destroy(libxl_ctx *ctx,
>> Â Â Âif (rc < 0) {
>> Â Â Â Â ÂLIBXL__LOG_ERRNOVAL(ctx, LIBXL__LOG_ERROR, rc, "xc_domain_pause 
>> failed for %d", domid);
>> Â Â Â}
>> + Â Âif (libxl__devices_destroy(gc, domid) < 0)
>> + Â Â Â ÂLIBXL__LOG(ctx, LIBXL__LOG_ERROR,
>> + Â Â Â Â Â Â Â Â Â "libxl__devices_destroy failed for %d", domid);
>> Â Â Âif (dm_present) {
>> Â Â Â Â Âif (libxl__destroy_device_model(gc, domid) < 0)
>> Â Â Â Â Â Â ÂLIBXL__LOG(ctx, LIBXL__LOG_ERROR, "libxl__destroy_device_model 
>> failed for %d", domid);
>>
>> Â Â Â Â Âlibxl__qmp_cleanup(gc, domid);
>> Â Â Â}
>> - Â Âif (libxl__devices_destroy(gc, domid) < 0)
>> - Â Â Â ÂLIBXL__LOG(ctx, LIBXL__LOG_ERROR,
>> - Â Â Â Â Â Â Â Â Â "libxl__devices_destroy failed for %d", domid);
>>
>> Â Â Âvm_path = libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/vm", 
>> dom_path));
>> Â Â Âif (vm_path)
>>
>> _______________________________________________
>> Xen-devel mailing list
>> Xen-devel@xxxxxxxxxxxxxxxxxxx
>> http://lists.xensource.com/xen-devel
>>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel

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