[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] libxc/restore: introduce setup() and cleanup() on restore
commit ce44b40387d787f3c608c2bd0c39285971b8aea3 Author: Yang Hongyang <yanghy@xxxxxxxxxxxxxx> AuthorDate: Thu May 14 16:55:17 2015 +0800 Commit: Ian Campbell <ian.campbell@xxxxxxxxxx> CommitDate: Thu May 14 13:04:23 2015 +0100 libxc/restore: introduce setup() and cleanup() on restore introduce setup() and cleanup() which subsume the ctx->restore.ops.{setup,cleanup}() calls and also do memory alloc/free. Signed-off-by: Yang Hongyang <yanghy@xxxxxxxxxxxxxx> CC: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CC: Ian Campbell <Ian.Campbell@xxxxxxxxxx> CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> CC: Wei Liu <wei.liu2@xxxxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Acked-by: Ian Campbell <Ian.Campbell@xxxxxxxxxx> --- tools/libxc/xc_sr_restore.c | 48 ++++++++++++++++++++++++++++++------------ 1 files changed, 34 insertions(+), 14 deletions(-) diff --git a/tools/libxc/xc_sr_restore.c b/tools/libxc/xc_sr_restore.c index 8022c3d..2345f66 100644 --- a/tools/libxc/xc_sr_restore.c +++ b/tools/libxc/xc_sr_restore.c @@ -510,6 +510,38 @@ static int process_record(struct xc_sr_context *ctx, struct xc_sr_record *rec) return rc; } +static int setup(struct xc_sr_context *ctx) +{ + xc_interface *xch = ctx->xch; + int rc; + + rc = ctx->restore.ops.setup(ctx); + if ( rc ) + goto err; + + ctx->restore.max_populated_pfn = (32 * 1024 / 4) - 1; + ctx->restore.populated_pfns = bitmap_alloc( + ctx->restore.max_populated_pfn + 1); + if ( !ctx->restore.populated_pfns ) + { + ERROR("Unable to allocate memory for populated_pfns bitmap"); + rc = -1; + goto err; + } + + err: + return rc; +} + +static void cleanup(struct xc_sr_context *ctx) +{ + xc_interface *xch = ctx->xch; + + free(ctx->restore.populated_pfns); + if ( ctx->restore.ops.cleanup(ctx) ) + PERROR("Failed to clean up"); +} + #ifdef XG_LIBXL_HVM_COMPAT extern int read_qemu(struct xc_sr_context *ctx); #endif @@ -524,19 +556,10 @@ static int restore(struct xc_sr_context *ctx) IPRINTF("Restoring domain"); - rc = ctx->restore.ops.setup(ctx); + rc = setup(ctx); if ( rc ) goto err; - ctx->restore.max_populated_pfn = (32 * 1024 / 4) - 1; - ctx->restore.populated_pfns = bitmap_alloc( - ctx->restore.max_populated_pfn + 1); - if ( !ctx->restore.populated_pfns ) - { - ERROR("Unable to allocate memory for populated_pfns bitmap"); - goto err; - } - do { rc = read_record(ctx, &rec); @@ -571,10 +594,7 @@ static int restore(struct xc_sr_context *ctx) PERROR("Restore failed"); done: - free(ctx->restore.populated_pfns); - rc = ctx->restore.ops.cleanup(ctx); - if ( rc ) - PERROR("Failed to clean up"); + cleanup(ctx); if ( saved_rc ) { -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |