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