All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] libxl: Rewind toolstack_save_fd in libxl_save_helper when using remus
@ 2014-06-20  6:59 Yang Hongyang
  2014-06-20 10:23 ` Andrew Cooper
  2014-06-20 12:50 ` Jason Andryuk
  0 siblings, 2 replies; 4+ messages in thread
From: Yang Hongyang @ 2014-06-20  6:59 UTC (permalink / raw)
  To: xen-devel; +Cc: Andrew Cooper, Yang Hongyang, Ian Jackson, Jason Andryuk

commit(b327a3f421bb57d262b7d1fb3c43b710852b103b) move the rewinding
of toolstack_save_fd to libxl, this breaks remus, because in remus
mode, toolstack_save_cb will be called in every checkpoint, if
we don't rewind it in libxl_save_helper, it will surely encounted
error.

I know this fix is just a hack, in fact the whole toolstack save
thing should be done in libxl. But this fix should solve Jason's
case and remus thing. Until migration v2 is upstreamed, this fix
should be fine.

Signed-off-by: Yang Hongyang <yanghy@cn.fujitsu.com>
CC: Jason Andryuk <andryuk@aero.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>
CC: Ian Jackson <ian.jackson@eu.citrix.com>
---
 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)
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-06-23 17:01 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-06-20  6:59 [PATCH] libxl: Rewind toolstack_save_fd in libxl_save_helper when using remus Yang Hongyang
2014-06-20 10:23 ` Andrew Cooper
2014-06-20 12:50 ` Jason Andryuk
2014-06-23 17:01   ` Ian Jackson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.