[PATCH v4 0/4] Introduce 'yank' oob qmp command to recover from hanging qemu

Lukas Straub posted 4 patches 3 years, 11 months ago
Test docker-mingw@fedora passed
Test checkpatch passed
Test asan passed
Test docker-quick@centos7 passed
Test FreeBSD passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/cover.1590421341.git.lukasstraub2@web.de
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, Max Reitz <mreitz@redhat.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>, Juan Quintela <quintela@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, Markus Armbruster <armbru@redhat.com>, Kevin Wolf <kwolf@redhat.com>, Eric Blake <eblake@redhat.com>
There is a newer version of this series
Makefile.objs                 |   3 +
block/nbd.c                   | 101 ++++++++++++--------
chardev/char-socket.c         |  24 +++++
migration/channel.c           |  12 +++
migration/migration.c         |  18 +++-
migration/multifd.c           |  10 ++
migration/qemu-file-channel.c |   6 ++
migration/savevm.c            |   2 +
qapi/misc.json                |  45 +++++++++
tests/Makefile.include        |   2 +-
yank.c                        | 174 ++++++++++++++++++++++++++++++++++
yank.h                        |  67 +++++++++++++
12 files changed, 425 insertions(+), 39 deletions(-)
create mode 100644 yank.c
create mode 100644 yank.h
[PATCH v4 0/4] Introduce 'yank' oob qmp command to recover from hanging qemu
Posted by Lukas Straub 3 years, 11 months ago
Hello Everyone,
In many cases, if qemu has a network connection (qmp, migration, chardev, etc.)
to some other server and that server dies or hangs, qemu hangs too.
These patches introduce the new 'yank' out-of-band qmp command to recover from
these kinds of hangs. The different subsystems register callbacks which get
executed with the yank command. For example the callback can shutdown() a
socket. This is intended for the colo use-case, but it can be used for other
things too of course.

Regards,
Lukas Straub

v4:
 -fix build errors...

v3:
 -don't touch softmmu/vl.c, use __contructor__ attribute instead (Paolo Bonzini)
 -fix build errors
 -rewrite migration patch so it actually passes all tests

v2:
 -don't touch io/ code anymore
 -always register yank functions
 -'yank' now takes a list of instances to yank
 -'query-yank' returns a list of yankable instances


Lukas Straub (4):
  Introduce yank feature
  block/nbd.c: Add yank feature
  chardev/char-socket.c: Add yank feature
  migration: Add yank feature

 Makefile.objs                 |   3 +
 block/nbd.c                   | 101 ++++++++++++--------
 chardev/char-socket.c         |  24 +++++
 migration/channel.c           |  12 +++
 migration/migration.c         |  18 +++-
 migration/multifd.c           |  10 ++
 migration/qemu-file-channel.c |   6 ++
 migration/savevm.c            |   2 +
 qapi/misc.json                |  45 +++++++++
 tests/Makefile.include        |   2 +-
 yank.c                        | 174 ++++++++++++++++++++++++++++++++++
 yank.h                        |  67 +++++++++++++
 12 files changed, 425 insertions(+), 39 deletions(-)
 create mode 100644 yank.c
 create mode 100644 yank.h

--
2.20.1
Re: [PATCH v4 0/4] Introduce 'yank' oob qmp command to recover from hanging qemu
Posted by Lukas Straub 3 years, 10 months ago
On Mon, 25 May 2020 17:44:12 +0200
Lukas Straub <lukasstraub2@web.de> wrote:

> Hello Everyone,
> In many cases, if qemu has a network connection (qmp, migration, chardev, etc.)
> to some other server and that server dies or hangs, qemu hangs too.
> These patches introduce the new 'yank' out-of-band qmp command to recover from
> these kinds of hangs. The different subsystems register callbacks which get
> executed with the yank command. For example the callback can shutdown() a
> socket. This is intended for the colo use-case, but it can be used for other
> things too of course.
> 
> Regards,
> Lukas Straub

Hello Everyone,
Can this be reviewed, it would be cool to have this in qemu 5.1.

Regards,
Lukas Straub
Re: [PATCH v4 0/4] Introduce 'yank' oob qmp command to recover from hanging qemu
Posted by Stefan Hajnoczi 3 years, 10 months ago
On Sat, Jun 06, 2020 at 09:30:38PM +0200, Lukas Straub wrote:
> On Mon, 25 May 2020 17:44:12 +0200
> Lukas Straub <lukasstraub2@web.de> wrote:
> 
> > Hello Everyone,
> > In many cases, if qemu has a network connection (qmp, migration, chardev, etc.)
> > to some other server and that server dies or hangs, qemu hangs too.
> > These patches introduce the new 'yank' out-of-band qmp command to recover from
> > these kinds of hangs. The different subsystems register callbacks which get
> > executed with the yank command. For example the callback can shutdown() a
> > socket. This is intended for the colo use-case, but it can be used for other
> > things too of course.
> > 
> > Regards,
> > Lukas Straub
> 
> Hello Everyone,
> Can this be reviewed, it would be cool to have this in qemu 5.1.

Please see my reply to a previous version. Code that executes in the oob
environment needs to take special precautions, this needs to be
documented so that yank API users know what the limitations are.

Stefan