|
[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 |