[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v8 1/8] Introduce yank feature
From: |
Markus Armbruster |
Subject: |
Re: [PATCH v8 1/8] Introduce yank feature |
Date: |
Tue, 01 Sep 2020 13:30:29 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) |
Lukas Straub <lukasstraub2@web.de> writes:
> The yank feature allows to recover from hanging qemu by "yanking"
> at various parts. Other qemu systems can register themselves and
> multiple yank functions. Then all yank functions for selected
> instances can be called by the 'yank' out-of-band qmp command.
> Available instances can be queried by a 'query-yank' oob command.
>
> Signed-off-by: Lukas Straub <lukasstraub2@web.de>
> Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
[...]
> diff --git a/qapi/misc.json b/qapi/misc.json
> index 9d32820dc1..7de330416a 100644
> --- a/qapi/misc.json
> +++ b/qapi/misc.json
> @@ -1615,3 +1615,65 @@
> ##
> { 'command': 'query-vm-generation-id', 'returns': 'GuidInfo' }
>
> +##
> +# @YankInstances:
> +#
> +# @instances: List of yank instances.
> +#
> +# A yank instance can be yanked with the "yank" qmp command to recover from a
> +# hanging qemu.
> +#
> +# Yank instances are named after the following schema:
> +# "blockdev:<node-name>" refers to a block device. Currently only nbd block
> +# devices are implemented.
> +# "chardev:<chardev-name>" refers to a chardev. Currently only socket
> chardevs
> +# are implemented.
The two "Currently only ... are implemented" are redundant with ...
> +# "migration" refers to the migration currently in progress.
> +#
> +# Currently implemented yank instances:
> +# -nbd block device:
> +# Yanking it will shutdown the connection to the nbd server without
> +# attempting to reconnect.
> +# -socket chardev:
> +# Yanking it will shutdown the connected socket.
> +# -migration:
> +# Yanking it will shutdown all migration connections.
... this list. Not a blocker, but if you have to respin for some other
reason, consider deleting them.
> +#
> +# Since: 5.2
> +##
> +{ 'struct': 'YankInstances', 'data': {'instances': ['str'] } }
> +
> +##
> +# @yank:
> +#
> +# Recover from hanging qemu by yanking the specified instances. See
> +# "YankInstances" for more information.
> +#
> +# Takes @YankInstances as argument.
> +#
> +# Returns: nothing.
> +#
> +# Example:
> +#
> +# -> { "execute": "yank", "arguments": { "instances": ["blockdev:nbd0"] } }
> +# <- { "return": {} }
> +#
> +# Since: 5.2
> +##
> +{ 'command': 'yank', 'data': 'YankInstances', 'allow-oob': true }
> +
> +##
> +# @query-yank:
> +#
> +# Query yank instances. See "YankInstances" for more information.
> +#
> +# Returns: @YankInstances
> +#
> +# Example:
> +#
> +# -> { "execute": "query-yank" }
> +# <- { "return": { "instances": ["blockdev:nbd0"] } }
> +#
> +# Since: 5.2
> +##
> +{ 'command': 'query-yank', 'returns': 'YankInstances', 'allow-oob': true }
You addressed all my review comments nicely, except for the one
questioning the wisdom of encoding structured data into the instance
name. Daniel and you pointed me to the spot where this was discussed
previously, in review of your v1. I read the thread, and replied to it.
I'd like us to put this series on hold to give us time to discuss and
decide.
Thanks!
[...]
- [PATCH v8 0/8] Introduce 'yank' oob qmp command to recover from hanging qemu, Lukas Straub, 2020/09/01
- [PATCH v8 2/8] block/nbd.c: Add yank feature, Lukas Straub, 2020/09/01
- [PATCH v8 3/8] chardev/char-socket.c: Add yank feature, Lukas Straub, 2020/09/01
- [PATCH v8 4/8] migration: Add yank feature, Lukas Straub, 2020/09/01
- [PATCH v8 6/8] io: Document qmp oob suitability of qio_channel_shutdown and io_shutdown, Lukas Straub, 2020/09/01
- [PATCH v8 5/8] io/channel-tls.c: make qio_channel_tls_shutdown thread-safe, Lukas Straub, 2020/09/01