diff mbox series

[2/2] tools/libxl: enable in-band reconnect marker for stubdom QMP proxy

Message ID 20220905135019.3749982-2-marmarek@invisiblethingslab.com (mailing list archive)
State New, archived
Headers show
Series [1/2] vchan-socket-proxy: add reconnect marker support | expand

Commit Message

Marek Marczykowski-Górecki Sept. 5, 2022, 1:50 p.m. UTC
This enables stubdom reliably detect when it needs to reconnect QMP
socket. It is critical, as otherwise QEMU will not send its handshake,
and so libxl will timeout while waiting on one. When it happens during
domain startup, it can result in error like this:

libxl: libxl_pci.c:1772:device_pci_add_done: Domain 3:libxl__device_pci_add failed for PCI device 0:0:14.0 (rc -9)
libxl: libxl_create.c:1904:domcreate_attach_devices: Domain 3:unable to add pci devices

See vchan-socket-proxy commit message for details about this reconnect
corner case.

Stubdomain side needs to use --reconnect-marker=1 option too.

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
 tools/libs/light/libxl_dm.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Jason Andryuk Sept. 6, 2022, 12:45 p.m. UTC | #1
On Mon, Sep 5, 2022 at 9:50 AM Marek Marczykowski-Górecki
<marmarek@invisiblethingslab.com> wrote:
>
> This enables stubdom reliably detect when it needs to reconnect QMP
> socket. It is critical, as otherwise QEMU will not send its handshake,
> and so libxl will timeout while waiting on one. When it happens during
> domain startup, it can result in error like this:
>
> libxl: libxl_pci.c:1772:device_pci_add_done: Domain 3:libxl__device_pci_add failed for PCI device 0:0:14.0 (rc -9)
> libxl: libxl_create.c:1904:domcreate_attach_devices: Domain 3:unable to add pci devices
>
> See vchan-socket-proxy commit message for details about this reconnect
> corner case.
>
> Stubdomain side needs to use --reconnect-marker=1 option too.
>
> Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>

Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
Jason Andryuk Sept. 27, 2022, 1:15 p.m. UTC | #2
On Tue, Sep 6, 2022 at 8:45 AM Jason Andryuk <jandryuk@gmail.com> wrote:
>
> On Mon, Sep 5, 2022 at 9:50 AM Marek Marczykowski-Górecki
> <marmarek@invisiblethingslab.com> wrote:
> >
> > This enables stubdom reliably detect when it needs to reconnect QMP
> > socket. It is critical, as otherwise QEMU will not send its handshake,
> > and so libxl will timeout while waiting on one. When it happens during
> > domain startup, it can result in error like this:
> >
> > libxl: libxl_pci.c:1772:device_pci_add_done: Domain 3:libxl__device_pci_add failed for PCI device 0:0:14.0 (rc -9)
> > libxl: libxl_create.c:1904:domcreate_attach_devices: Domain 3:unable to add pci devices
> >
> > See vchan-socket-proxy commit message for details about this reconnect
> > corner case.
> >
> > Stubdomain side needs to use --reconnect-marker=1 option too.
> >
> > Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
>
> Reviewed-by: Jason Andryuk <jandryuk@gmail.com>

Also
Tested-by: Jason Andryuk <jandryuk@gmail.com>
Anthony PERARD Dec. 7, 2022, 3:26 p.m. UTC | #3
On Mon, Sep 05, 2022 at 03:50:19PM +0200, Marek Marczykowski-Górecki wrote:
> This enables stubdom reliably detect when it needs to reconnect QMP
> socket. It is critical, as otherwise QEMU will not send its handshake,
> and so libxl will timeout while waiting on one. When it happens during
> domain startup, it can result in error like this:
> 
> libxl: libxl_pci.c:1772:device_pci_add_done: Domain 3:libxl__device_pci_add failed for PCI device 0:0:14.0 (rc -9)
> libxl: libxl_create.c:1904:domcreate_attach_devices: Domain 3:unable to add pci devices
> 
> See vchan-socket-proxy commit message for details about this reconnect
> corner case.
> 
> Stubdomain side needs to use --reconnect-marker=1 option too.
> 
> Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>

Acked-by: Anthony PERARD <anthony.perard@citrix.com>

Thanks,
diff mbox series

Patch

diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
index fc264a3a13a6..cc9c5bea1e7f 100644
--- a/tools/libs/light/libxl_dm.c
+++ b/tools/libs/light/libxl_dm.c
@@ -2625,10 +2625,11 @@  static void spawn_qmp_proxy(libxl__egc *egc,
     sdss->qmp_proxy_spawn.failure_cb = qmp_proxy_startup_failed;
     sdss->qmp_proxy_spawn.detached_cb = qmp_proxy_detached;
 
-    const int arraysize = 6;
+    const int arraysize = 7;
     GCNEW_ARRAY(args, arraysize);
     args[nr++] = STUBDOM_QMP_PROXY_PATH;
     args[nr++] = GCSPRINTF("--state-path=%s", sdss->qmp_proxy_spawn.xspath);
+    args[nr++] = "--reconnect-marker=1";
     args[nr++] = GCSPRINTF("%u", dm_domid);
     args[nr++] = GCSPRINTF("%s/device-model/%u/qmp-vchan", dom_path, guest_domid);
     args[nr++] = (char*)libxl__qemu_qmp_path(gc, guest_domid);