|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] libxl: Rewind toolstack_save_fd in libxl_save_helper when using remus
commit 29471171f5b63ce76a011e5f7dce30ecba52f734
Author: Yang Hongyang <yanghy@xxxxxxxxxxxxxx>
AuthorDate: Fri Jun 20 14:59:34 2014 +0800
Commit: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
CommitDate: Mon Jun 23 17:58:54 2014 +0100
libxl: Rewind toolstack_save_fd in libxl_save_helper when using remus
Commit b327a3f421bb57d262b7d1fb3c43b710852b103b moved the rewinding of
toolstack_save_fd to libxl. This breaks remus, because in remus mode,
toolstack_save_cb will be called in every checkpoint, and if we don't
rewind it in libxl_save_helper, it will surely fail.
This fix is just a hack: in fact the whole toolstack save thing should
be done in libxl. But for now (until migration v2) this fix should
solve both remus and Jason Adryuk's use case.
Signed-off-by: Yang Hongyang <yanghy@xxxxxxxxxxxxxx>
Tested-by: Jason Andryuk <andryuk@xxxxxxxx>
Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---
tools/libxl/libxl_save_helper.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/tools/libxl/libxl_save_helper.c b/tools/libxl/libxl_save_helper.c
index b259bd0..4619fa3 100644
--- a/tools/libxl/libxl_save_helper.c
+++ b/tools/libxl/libxl_save_helper.c
@@ -159,6 +159,7 @@ int helper_getreply(void *user)
static int toolstack_save_fd;
static uint32_t toolstack_save_len;
+static struct save_callbacks helper_save_callbacks;
static int toolstack_save_cb(uint32_t domid, uint8_t **buf,
uint32_t *len, void *data)
@@ -167,6 +168,12 @@ static int toolstack_save_cb(uint32_t domid, uint8_t **buf,
assert(toolstack_save_fd > 0);
+ /* This is a hack for remus */
+ if (helper_save_callbacks.checkpoint) {
+ r = lseek(toolstack_save_fd, 0, SEEK_SET);
+ if (r) fail(errno,"rewind toolstack data tmpfile");
+ }
+
*buf = xmalloc(toolstack_save_len);
r = read_exactly(toolstack_save_fd, *buf, toolstack_save_len);
if (r<0) fail(errno,"read toolstack data");
@@ -191,7 +198,6 @@ static void complete(int retval) {
exit(0);
}
-static struct save_callbacks helper_save_callbacks;
static struct restore_callbacks helper_restore_callbacks;
int main(int argc, char **argv)
--
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 |