From: Yang Hongyang Date: Fri, 20 Jun 2014 06:59:34 +0000 (+0800) Subject: libxl: Rewind toolstack_save_fd in libxl_save_helper when using remus X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~4804 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=29471171f5b63ce76a011e5f7dce30ecba52f734;p=xen.git 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 Tested-by: Jason Andryuk Reviewed-by: Andrew Cooper Acked-by: Ian Jackson Signed-off-by: Ian Jackson --- diff --git a/tools/libxl/libxl_save_helper.c b/tools/libxl/libxl_save_helper.c index b259bd0215..4619fa34a3 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)