From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xen.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
Ian Jackson <Ian.Jackson@eu.citrix.com>,
Wei Liu <wei.liu2@citrix.com>
Subject: [PATCH v4 28/29] tools/libxc: Drop all XG_LIBXL_HVM_COMPAT code from libxc
Date: Tue, 14 Jul 2015 11:59:43 +0100 [thread overview]
Message-ID: <1436871584-6522-29-git-send-email-andrew.cooper3@citrix.com> (raw)
In-Reply-To: <1436871584-6522-1-git-send-email-andrew.cooper3@citrix.com>
Libxl has now been fully adjusted not to need it.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Ian Campbell <Ian.Campbell@citrix.com>
CC: Ian Jackson <Ian.Jackson@eu.citrix.com>
CC: Wei Liu <wei.liu2@citrix.com>
---
tools/libxc/xc_sr_common.h | 5 --
tools/libxc/xc_sr_restore.c | 18 -----
tools/libxc/xc_sr_restore_x86_hvm.c | 124 -----------------------------------
tools/libxc/xc_sr_save_x86_hvm.c | 36 ----------
4 files changed, 183 deletions(-)
diff --git a/tools/libxc/xc_sr_common.h b/tools/libxc/xc_sr_common.h
index 1f4d4e4..64f6082 100644
--- a/tools/libxc/xc_sr_common.h
+++ b/tools/libxc/xc_sr_common.h
@@ -309,11 +309,6 @@ struct xc_sr_context
/* HVM context blob. */
void *context;
size_t contextsz;
-
-/* #ifdef XG_LIBXL_HVM_COMPAT */
- uint32_t qlen;
- void *qbuf;
-/* #endif */
} restore;
};
} x86_hvm;
diff --git a/tools/libxc/xc_sr_restore.c b/tools/libxc/xc_sr_restore.c
index 18ba411..bf1ee15 100644
--- a/tools/libxc/xc_sr_restore.c
+++ b/tools/libxc/xc_sr_restore.c
@@ -627,9 +627,6 @@ static void cleanup(struct xc_sr_context *ctx)
PERROR("Failed to clean up");
}
-#ifdef XG_LIBXL_HVM_COMPAT
-extern int read_qemu(struct xc_sr_context *ctx);
-#endif
/*
* Restore a domain.
*/
@@ -656,21 +653,6 @@ static int restore(struct xc_sr_context *ctx)
goto err;
}
-#ifdef XG_LIBXL_HVM_COMPAT
- if ( ctx->dominfo.hvm &&
- (rec.type == REC_TYPE_END || rec.type == REC_TYPE_CHECKPOINT) )
- {
- rc = read_qemu(ctx);
- if ( rc )
- {
- if ( ctx->restore.buffer_all_records )
- goto remus_failover;
- else
- goto err;
- }
- }
-#endif
-
if ( ctx->restore.buffer_all_records &&
rec.type != REC_TYPE_END &&
rec.type != REC_TYPE_CHECKPOINT )
diff --git a/tools/libxc/xc_sr_restore_x86_hvm.c b/tools/libxc/xc_sr_restore_x86_hvm.c
index 6f5af0e..49d22c7 100644
--- a/tools/libxc/xc_sr_restore_x86_hvm.c
+++ b/tools/libxc/xc_sr_restore_x86_hvm.c
@@ -3,24 +3,6 @@
#include "xc_sr_common_x86.h"
-#ifdef XG_LIBXL_HVM_COMPAT
-static int handle_toolstack(struct xc_sr_context *ctx, struct xc_sr_record *rec)
-{
- xc_interface *xch = ctx->xch;
- int rc;
-
- if ( !ctx->restore.callbacks || !ctx->restore.callbacks->toolstack_restore )
- return 0;
-
- rc = ctx->restore.callbacks->toolstack_restore(
- ctx->domid, rec->data, rec->length, ctx->restore.callbacks->data);
-
- if ( rc < 0 )
- PERROR("restoring toolstack");
- return rc;
-}
-#endif
-
/*
* Process an HVM_CONTEXT record from the stream.
*/
@@ -93,98 +75,6 @@ static int handle_hvm_params(struct xc_sr_context *ctx,
return 0;
}
-#ifdef XG_LIBXL_HVM_COMPAT
-int read_qemu(struct xc_sr_context *ctx);
-int read_qemu(struct xc_sr_context *ctx)
-{
- xc_interface *xch = ctx->xch;
- char qemusig[21];
- uint32_t qlen;
- void *qbuf = NULL;
- int rc = -1;
-
- if ( read_exact(ctx->fd, qemusig, sizeof(qemusig)) )
- {
- PERROR("Error reading QEMU signature");
- goto out;
- }
-
- if ( !memcmp(qemusig, "DeviceModelRecord0002", sizeof(qemusig)) )
- {
- if ( read_exact(ctx->fd, &qlen, sizeof(qlen)) )
- {
- PERROR("Error reading QEMU record length");
- goto out;
- }
-
- qbuf = malloc(qlen);
- if ( !qbuf )
- {
- PERROR("no memory for device model state");
- goto out;
- }
-
- if ( read_exact(ctx->fd, qbuf, qlen) )
- {
- PERROR("Error reading device model state");
- goto out;
- }
- }
- else
- {
- ERROR("Invalid device model state signature '%*.*s'",
- (int)sizeof(qemusig), (int)sizeof(qemusig), qemusig);
- goto out;
- }
-
- /* With Remus, this could be read many times */
- if ( ctx->x86_hvm.restore.qbuf )
- free(ctx->x86_hvm.restore.qbuf);
- ctx->x86_hvm.restore.qbuf = qbuf;
- ctx->x86_hvm.restore.qlen = qlen;
- rc = 0;
-
-out:
- if (rc)
- free(qbuf);
- return rc;
-}
-
-static int handle_qemu(struct xc_sr_context *ctx)
-{
- xc_interface *xch = ctx->xch;
- char path[256];
- uint32_t qlen = ctx->x86_hvm.restore.qlen;
- void *qbuf = ctx->x86_hvm.restore.qbuf;
- int rc = -1;
- FILE *fp = NULL;
-
- sprintf(path, XC_DEVICE_MODEL_RESTORE_FILE".%u", ctx->domid);
- fp = fopen(path, "wb");
- if ( !fp )
- {
- PERROR("Failed to open '%s' for writing", path);
- goto out;
- }
-
- DPRINTF("Writing %u bytes of QEMU data", qlen);
- if ( fwrite(qbuf, 1, qlen, fp) != qlen )
- {
- PERROR("Failed to write %u bytes of QEMU data", qlen);
- goto out;
- }
-
- rc = 0;
-
- out:
- if ( fp )
- fclose(fp);
- free(qbuf);
-
- return rc;
-}
-#endif
-
/* restore_ops function. */
static bool x86_hvm_pfn_is_valid(const struct xc_sr_context *ctx, xen_pfn_t pfn)
{
@@ -260,11 +150,6 @@ static int x86_hvm_process_record(struct xc_sr_context *ctx,
case REC_TYPE_HVM_PARAMS:
return handle_hvm_params(ctx, rec);
-#ifdef XG_LIBXL_HVM_COMPAT
- case REC_TYPE_TOOLSTACK:
- return handle_toolstack(ctx, rec);
-#endif
-
default:
return RECORD_NOT_PROCESSED;
}
@@ -314,15 +199,6 @@ static int x86_hvm_stream_complete(struct xc_sr_context *ctx)
return rc;
}
-#ifdef XG_LIBXL_HVM_COMPAT
- rc = handle_qemu(ctx);
- if ( rc )
- {
- ERROR("Failed to dump qemu");
- return rc;
- }
-#endif
-
return rc;
}
diff --git a/tools/libxc/xc_sr_save_x86_hvm.c b/tools/libxc/xc_sr_save_x86_hvm.c
index f4604db..cdee774 100644
--- a/tools/libxc/xc_sr_save_x86_hvm.c
+++ b/tools/libxc/xc_sr_save_x86_hvm.c
@@ -118,36 +118,6 @@ static int write_hvm_params(struct xc_sr_context *ctx)
return rc;
}
-#ifdef XG_LIBXL_HVM_COMPAT
-static int write_toolstack(struct xc_sr_context *ctx)
-{
- xc_interface *xch = ctx->xch;
- struct xc_sr_record rec = {
- .type = REC_TYPE_TOOLSTACK,
- .length = 0,
- };
- uint8_t *buf;
- uint32_t len;
- int rc;
-
- if ( !ctx->save.callbacks || !ctx->save.callbacks->toolstack_save )
- return 0;
-
- if ( ctx->save.callbacks->toolstack_save(
- ctx->domid, &buf, &len, ctx->save.callbacks->data) < 0 )
- {
- PERROR("Error calling toolstack_save");
- return -1;
- }
-
- rc = write_split_record(ctx, &rec, buf, len);
- if ( rc < 0 )
- PERROR("Error writing TOOLSTACK record");
- free(buf);
- return rc;
-}
-#endif
-
static xen_pfn_t x86_hvm_pfn_to_gfn(const struct xc_sr_context *ctx,
xen_pfn_t pfn)
{
@@ -199,12 +169,6 @@ static int x86_hvm_end_of_checkpoint(struct xc_sr_context *ctx)
if ( rc )
return rc;
-#ifdef XG_LIBXL_HVM_COMPAT
- rc = write_toolstack(ctx);
- if ( rc )
- return rc;
-#endif
-
/* Write the HVM_CONTEXT record. */
rc = write_hvm_context(ctx);
if ( rc )
--
1.7.10.4
next prev parent reply other threads:[~2015-07-14 10:59 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-14 10:59 [PATCH v4 00/27] Libxl migration v2 Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 01/29] bsd-sys-queue-h-seddery: Massage `offsetof' Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 02/29] tools/libxc: Always compile the compat qemu variables into xc_sr_context Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 03/29] tools/libxl: Introduce ROUNDUP() Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 04/29] tools/libxl: Introduce libxl__kill() Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 05/29] tools/libxl: Stash all restore parameters in domain_create_state Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 06/29] tools/libxl: Split libxl__domain_create_state.restore_fd in two Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 07/29] tools/libxl: Extra management APIs for the save helper Andrew Cooper
2015-07-14 13:23 ` Ian Jackson
2015-07-14 10:59 ` [PATCH v4 08/29] tools/libxl: Add save_helper_state pointers to libxl__xc_domain_{save, restore}() Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 09/29] tools/libxl: Fix libxl__carefd_opened() to be more useful with an invalid fd Andrew Cooper
2015-07-14 13:39 ` Ian Jackson
2015-07-14 14:08 ` Ian Campbell
2015-07-14 10:59 ` [PATCH v4 10/29] tools/xl: Mandatory flag indicating the format of the migration stream Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 11/29] docs: Libxl migration v2 stream specification Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 12/29] tools/python: Libxc migration v2 infrastructure Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 13/29] tools/python: Libxl " Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 14/29] tools/python: Other migration infrastructure Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 15/29] tools/python: Verification utility for v2 stream spec compliance Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 16/29] tools/python: Conversion utility for legacy migration streams Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 17/29] tools/libxl: Migration v2 stream format Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 18/29] tools/libxl: Infrastructure for reading a libxl migration v2 stream Andrew Cooper
2015-07-14 13:32 ` Ian Jackson
2015-07-14 10:59 ` [PATCH v4 19/29] tools/libxl: Infrastructure to convert a legacy stream Andrew Cooper
2015-07-14 13:33 ` Ian Jackson
2015-07-14 10:59 ` [PATCH v4 20/29] tools/libxl: Convert a legacy stream if needed Andrew Cooper
2015-07-14 13:37 ` Ian Jackson
2015-07-14 10:59 ` [PATCH v4 21/29] tools/libxc+libxl+xl: Restore v2 streams Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 22/29] tools/libxl: Infrastructure for writing a v2 stream Andrew Cooper
2015-07-14 13:40 ` Ian Jackson
2015-07-14 10:59 ` [PATCH v4 23/29] tools/libxc+libxl+xl: Save v2 streams Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 24/29] docs/libxl: Introduce CHECKPOINT_END to support migration v2 remus streams Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 25/29] tools/libxl: Write checkpoint records into the stream Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 26/29] tools/libx{c, l}: Introduce restore_callbacks.checkpoint() Andrew Cooper
2015-07-14 10:59 ` [PATCH v4 27/29] tools/libxl: Handle checkpoint records in a libxl migration v2 stream Andrew Cooper
2015-07-14 10:59 ` Andrew Cooper [this message]
2015-07-14 10:59 ` [PATCH v4 29/29] tools/libxl: Drop all knowledge of toolstack callbacks Andrew Cooper
2015-07-15 10:21 ` [PATCH v4 00/27] Libxl migration v2 Wei Liu
2015-07-15 10:25 ` Ian Jackson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1436871584-6522-29-git-send-email-andrew.cooper3@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).