[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 06/11] libxl: Move qmp cleanup into devicemodel destroy function
Removing the qmp connection is logically part of the device model destruction; having the caller destroy it is a mild layering violation. Move libxl__qmp_cleanup() into libxl__destroy_device_model(). This will make it easier when we make devicemodel destruction asynchronous. Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx> Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- CC: Ian Jackson <ian.jackson@xxxxxxxxxx> CC: Wei Liu <wei.liu2@xxxxxxxxxx> --- tools/libxl/libxl_dm.c | 9 +++++++-- tools/libxl/libxl_domain.c | 2 -- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index d73bbb6b06..450433452d 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -2698,12 +2698,17 @@ out: int libxl__destroy_device_model(libxl__gc *gc, uint32_t domid) { + int rc; char *path = DEVICE_MODEL_XS_PATH(gc, LIBXL_TOOLSTACK_DOMID, domid, ""); if (!xs_rm(CTX->xsh, XBT_NULL, path)) LOGD(ERROR, domid, "xs_rm failed for %s", path); /* We should try to destroy the device model anyway. */ - return kill_device_model(gc, - GCSPRINTF("/local/domain/%d/image/device-model-pid", domid)); + rc = kill_device_model(gc, + GCSPRINTF("/local/domain/%d/image/device-model-pid", domid)); + + libxl__qmp_cleanup(gc, domid); + + return rc; } /* Return 0 if no dm needed, 1 if needed and <0 if error. */ diff --git a/tools/libxl/libxl_domain.c b/tools/libxl/libxl_domain.c index 3377bba994..d46b97dedf 100644 --- a/tools/libxl/libxl_domain.c +++ b/tools/libxl/libxl_domain.c @@ -1069,8 +1069,6 @@ void libxl__destroy_domid(libxl__egc *egc, libxl__destroy_domid_state *dis) if (dm_present) { if (libxl__destroy_device_model(gc, domid) < 0) LOGD(ERROR, domid, "libxl__destroy_device_model failed"); - - libxl__qmp_cleanup(gc, domid); } dis->drs.ao = ao; dis->drs.domid = domid; -- 2.19.2 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |