- Update to the latest Xen 4.7 pre-release f3a7ca02 (fate#319989)

Drop libxl.migrate-legacy-stream-read.patch

OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=420
This commit is contained in:
Charles Arnold 2016-04-19 16:54:05 +00:00 committed by Git OBS Bridge
parent b35f1092d6
commit 71a94eb539
9 changed files with 21 additions and 118 deletions

View File

@ -36,11 +36,11 @@ Index: xen-4.7.0-testing/tools/libxc/include/xc_dom.h
- /* ("xEn3" with the 0x80 bit of the "E" set).*/
- uint32_t version; /* Version of this structure. */
- uint32_t flags; /* SIF_xxx flags. */
- uint32_t cmdline_paddr; /* Physical address of the command line. */
- uint32_t nr_modules; /* Number of modules passed to the kernel. */
- uint32_t modlist_paddr; /* Physical address of an array of */
- uint64_t modlist_paddr; /* Physical address of an array of */
- /* hvm_modlist_entry. */
- uint32_t rsdp_paddr; /* Physical address of the RSDP ACPI data */
- uint64_t cmdline_paddr; /* Physical address of the command line. */
- uint64_t rsdp_paddr; /* Physical address of the RSDP ACPI data */
- /* structure. */
-} __attribute__((packed));
-
@ -59,7 +59,7 @@ Index: xen-4.7.0-testing/xen/include/public/xen.h
===================================================================
--- xen-4.7.0-testing.orig/xen/include/public/xen.h
+++ xen-4.7.0-testing/xen/include/public/xen.h
@@ -858,6 +858,37 @@ typedef struct start_info start_info_t;
@@ -860,6 +860,37 @@ typedef struct start_info start_info_t;
*/
#define XEN_HVM_START_MAGIC_VALUE 0x336ec578

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5bc1dcb1e3c4d80009ec4710ff153cd7e0ec792741ad31a5939d828683c9b6b7
size 2877725
oid sha256:d07d42c2aa44e6e424a9b01d8778b908e2994860e2a24bf3f3ec15adc85a3315
size 2877767

View File

@ -1,101 +0,0 @@
tools/libxl: Fix legacy migration following COLO backchannel breakage
c/s f5d947bf1b "tools/libxl: add back channel support to read stream"
made a bogus adjustment to libxl__stream_read_start(), including
removing the comment hinting at what was going on, which breaks
conversion of a legacy migration stream.
Symptoms look like:
root@anonymi:~ # xl migrate domU host
migration target: Ready to receive domain.
Saving to migration stream new xl format (info 0x1/0x0/2677)
xc: error: error polling suspend notification channel: -1: Internal error
Loading new save file <incoming migration stream> (new xl fmt info 0x1/0x0/2677)
Savefile contains xl domain config in JSON format
Parsing config from <saved>
libxl: error: libxl_stream_read.c:327:stream_header_done: Invalid ident: expected 0x4c6962786c466d74, got 0x01f00f0000000000
libxl: error: libxl_utils.c:430:libxl_read_exactly: file/stream truncated reading ipc msg header from domain 1 save/restore helper stdout pipe
The adjustment is not required for backchannel support (as there is no
interaction between back channels and legacy conversion), and caused
stream->fd to be latched in the datacopier before legacy conversion
substitutes it for the fd which is the output of the conversion script.
This causes libxl to consume data from the legacy stream rather than the
v2 stream, and for the conversion script to encounter an error as the
legacy stream appears to skip ahead.
Undo the adjustments to libxl__stream_read_start(), and introduce a
better description of what is going on. Introduce some extra assertions
to try and catch similar breakage in the future.
Reported-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Ian Jackson <Ian.Jackson@eu.citrix.com>
CC: Wei Liu <wei.liu2@citrix.com>
CC: Olaf Hering <olaf@aepfle.de>
CC: Yang Hongyang <hongyang.yang@easystack.cn>
CC: Wen Congyang <wency@cn.fujitsu.com>
CC: Changlong Xie <xiecl.fnst@cn.fujitsu.com>
---
tools/libxl/libxl_stream_read.c | 33 ++++++++++++++++++++++++---------
1 file changed, 24 insertions(+), 9 deletions(-)
diff --git a/tools/libxl/libxl_stream_read.c b/tools/libxl/libxl_stream_read.c
index 9659051..89c2f21 100644
--- a/tools/libxl/libxl_stream_read.c
+++ b/tools/libxl/libxl_stream_read.c
@@ -234,16 +234,16 @@ void libxl__stream_read_start(libxl__egc *egc,
stream->running = true;
stream->phase = SRS_PHASE_NORMAL;
- dc->ao = stream->ao;
- dc->copywhat = "restore v2 stream";
- dc->readfd = stream->fd;
- dc->writefd = -1;
-
- if (stream->back_channel)
- return;
-
if (stream->legacy) {
- /* Convert the legacy stream. */
+ /*
+ * Convert the legacy stream.
+ *
+ * This results in a fork()/exec() of conversion helper script. It is
+ * passed the exiting stream->fd as an input, and returns the
+ * transformed stream via a new pipe. The fd of this new pipe then
+ * replaces stream->fd, to make the rest of the stream read code
+ * agnostic to whether legacy conversion is happening or not.
+ */
libxl__conversion_helper_state *chs = &stream->chs;
chs->legacy_fd = stream->fd;
@@ -258,10 +258,25 @@ void libxl__stream_read_start(libxl__egc *egc,
goto err;
}
+ /* There should be no interaction of COLO backchannels and legacy
+ * stream conversion. */
+ assert(!stream->back_channel);
+
+ /* Confirm *dc is still zeroed out, while we shuffle stream->fd. */
+ assert(dc->ao == NULL);
assert(stream->chs.v2_carefd);
stream->fd = libxl__carefd_fd(stream->chs.v2_carefd);
stream->dcs->libxc_fd = stream->fd;
}
+ /* stream->fd is now a v2 stream. */
+
+ dc->ao = stream->ao;
+ dc->copywhat = "restore v2 stream";
+ dc->readfd = stream->fd;
+ dc->writefd = -1;
+
+ if (stream->back_channel)
+ return;
/* Start reading the stream header. */
rc = setup_read(stream, "stream header",

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f2a417c47e301a3c5ed5ef50546e3c1d5eb08636cf407d851802c86bcf9f41c3
size 256310
oid sha256:879d9d369e718cdb7b1dcda2b051609ca59f9c89e1ae1160bdedf19bf2914f72
size 256337

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:941d427153a9d2bff090a23117ba43a0cb9f30dee252819edb7e967db07ccab0
size 3236120
oid sha256:cc6bd72f1447c6e9f3b864c12032b0b7a2462a7681c60501a8c0b77d03027467
size 3237713

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e6879a00cce1f705fa881fa38c707773f03c35e0dc30d5728e3f095157a6bc24
size 17477288
oid sha256:2a6caced4968291b7097ad760f463d5631d03d3633c63a4b0d80e0f7a480c16d
size 17477537

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:458f600be1d287e71fd349df83b3f4c47dd8fff9ecc0f770509434ce7f5511cb
size 4409813
oid sha256:3aaa35be2550c1e78a73651d033abb954e0322688467f2fa0c37a7c2abf829bd
size 4409531

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Mon Apr 18 11:03:33 MDT 2016 - carnold@suse.com
- Update to the latest Xen 4.7 pre-release f3a7ca02 (fate#319989)
Drop libxl.migrate-legacy-stream-read.patch
-------------------------------------------------------------------
Fri Apr 15 09:22:31 UTC 2016 - ohering@suse.de

View File

@ -1,7 +1,7 @@
#
# spec file for package xen
#
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2016 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -198,7 +198,6 @@ Source57: xen-utils-0.1.tar.bz2
# For xen-libs
Source99: baselibs.conf
# Upstream patches
Patch0: libxl.migrate-legacy-stream-read.patch
Patch164: xsa164.patch
# Upstream qemu-traditional patches
Patch250: VNC-Support-for-ExtendedKeyEvent-client-message.patch
@ -515,7 +514,6 @@ Authors:
%prep
%setup -q -n %xen_build_dir -a 1 -a 2 -a 5 -a 6 -a 57
# Upstream patches
%patch0 -p1
%patch164 -p1
# Upstream qemu patches
%patch250 -p1