[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v5 07/14] libxc/save: introduce setup() and cleanup() on save
introduce setup() and cleanup() which subsume the ctx->save.ops.{setup,cleanup}() calls. The SHADOW_OP_OFF hypercall also included in the cleanup(). Signed-off-by: Yang Hongyang <yanghy@xxxxxxxxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CC: Ian Campbell <Ian.Campbell@xxxxxxxxxx> CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> CC: Wei Liu <wei.liu2@xxxxxxxxxx> --- tools/libxc/xc_sr_save.c | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/tools/libxc/xc_sr_save.c b/tools/libxc/xc_sr_save.c index caa727d..f4ab5c5 100644 --- a/tools/libxc/xc_sr_save.c +++ b/tools/libxc/xc_sr_save.c @@ -637,6 +637,31 @@ static int send_domain_memory_nonlive(struct xc_sr_context *ctx) return rc; } +static int setup(struct xc_sr_context *ctx) +{ + int rc; + + rc = ctx->save.ops.setup(ctx); + if ( rc ) + goto err; + + rc = 0; + + err: + return rc; +} + +static void cleanup(struct xc_sr_context *ctx) +{ + xc_interface *xch = ctx->xch; + + xc_shadow_control(xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_OFF, + NULL, 0, NULL, 0, NULL); + + if ( ctx->save.ops.cleanup(ctx) ) + PERROR("Failed to clean up"); +} + /* * Save a domain. */ @@ -648,7 +673,7 @@ static int save(struct xc_sr_context *ctx, uint16_t guest_type) IPRINTF("Saving domain %d, type %s", ctx->domid, dhdr_type_to_str(guest_type)); - rc = ctx->save.ops.setup(ctx); + rc = setup(ctx); if ( rc ) goto err; @@ -701,12 +726,7 @@ static int save(struct xc_sr_context *ctx, uint16_t guest_type) PERROR("Save failed"); done: - xc_shadow_control(xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_OFF, - NULL, 0, NULL, 0, NULL); - - rc = ctx->save.ops.cleanup(ctx); - if ( rc ) - PERROR("Failed to clean up"); + cleanup(ctx); if ( saved_rc ) { -- 1.9.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |