All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v8 00/17] libxl: Enable save/restore/migration of a restricted QEMU + libxl__ev_qmp_*
@ 2019-01-04 15:30 Anthony PERARD
  2019-01-04 15:30 ` [PATCH v8 01/17] libxl: Enhance libxl__sendmsg_fds to deal with EINTR and EWOULDBLOCK Anthony PERARD
                   ` (16 more replies)
  0 siblings, 17 replies; 24+ messages in thread
From: Anthony PERARD @ 2019-01-04 15:30 UTC (permalink / raw)
  To: xen-devel; +Cc: Anthony PERARD, Ian Jackson, Wei Liu

Patch series available in this git branch:
https://xenbits.xen.org/git-http/people/aperard/xen-unstable.git br.libxl-ev-qmp-v8

Changes in v8:
    libxl_qmp: Implementation of libxl__ev_qmp_*:
        - few changes

    Then 3 patches have been added but are not necessary, they are follow-up
    patches:
        - libxl: Remove unused arg from libxl__sendmsg_fds
        - libxl_json: Remove libxl__json_object_append_to from header
	- libxl: Add comments to libxl__json_*get* functions

    All other patches are acked.

Changes in v7:
    plenty, with new patches

Changes in v6:
    Implementation of libxl__ev_qmp_* functions have been squashed to a single
    patch. And with that, a lot of changes in order to make it simpler to read
    the implementation, have better error reporting and a few bug fix.

    Checkout more detail changelog in the notes of each patch, as there is
    many.

Changes in v5:
    Plenty of patch have been applied.
    Other changes mostly are coding style and other typos.
    Some bug fixes.
    Details can be found in patch notes.

    I have left aside the change to cdrom_insert until I can found what to do
    with the userdata lock.

In order for libxl to be able to manage QEMU while it is restricted, a few
changes are needed. We need a new way to get a startup notification from QEMU
as xenstore may not be accessible when QEMU is ready. We also need to a
different way to have QEMU save it's state and to insert cdrom as a restricted
QEMU doesn't have access to the file system.

For both, we can use QMP, we can use it to query QEMU's status, and we can use
it to send a file descriptor through which QEMU can save its state, or it can
be a cdrom.

We take this opportunity to rewrite the QMP client, and this time been
asynchronous, the result is libxl__ev_qmp_*.

The plat de résistance in this patch series start with patch
"libxl: Design of an async API to issue QMP commands to QEMU"
which implement libxl__ev_qmp_* functions to turn the QMP client into
asynchronous mode.

This comes with changes that uses the new interface.
* "libxl: QEMU startup sync based on QMP"
  which can use QMP to find out when QEMU as started.
  this requires: "libxl_dm: Pre-open QMP socket for QEMU"
  But that only works with dm_restrict=1 as explain in the patch.
* "libxl: Re-implement domain_suspend_device_model using libxl__ev_qmp"
  Which rewrite libxl__qmp_save(), and adds the ability to have QEMU save
  its state to a file descriptor which libxl will have openned.

Patch series available in this git branch:
https://xenbits.xen.org/git-http/people/aperard/xen-unstable.git br.libxl-ev-qmp-v8

Cheers,

Anthony PERARD (17):
  libxl: Enhance libxl__sendmsg_fds to deal with EINTR and EWOULDBLOCK
  libxl_qmp: Separate QMP message generation from qmp_send_prepare
  libxl_qmp: Change qmp_qemu_check_version to compare version
  libxl: Add wrapper around libxl__json_object_to_json JSON
  libxl: Design of an async API to issue QMP commands to QEMU
  libxl_qmp: Implementation of libxl__ev_qmp_*
  libxl_exec: Add libxl__spawn_initiate_failure
  libxl: Add init/dispose of for libxl__domain_build_state
  libxl_dm: Pre-open QMP socket for QEMU
  libxl: Add dmss_init/dispose for libxl__dm_spawn_state
  libxl: QEMU startup sync based on QMP
  libxl_qmp: Store advertised QEMU version in libxl__ev_qmp
  libxl: Change libxl__domain_suspend_device_model() to be async
  libxl: Re-implement domain_suspend_device_model using libxl__ev_qmp
  libxl: Remove unused arg from libxl__sendmsg_fds
  libxl_json: Remove libxl__json_object_append_to from header
  libxl: Add comments to libxl__json_*get* functions

 tools/libxl/libxl_aoutils.c     |   2 +-
 tools/libxl/libxl_create.c      |  54 +-
 tools/libxl/libxl_dm.c          | 143 ++++-
 tools/libxl/libxl_dom_suspend.c |  37 +-
 tools/libxl/libxl_exec.c        |  11 +-
 tools/libxl/libxl_internal.h    | 197 ++++++-
 tools/libxl/libxl_json.c        |   9 +-
 tools/libxl/libxl_qmp.c         | 991 ++++++++++++++++++++++++++++++--
 tools/libxl/libxl_types.idl     |   7 +
 tools/libxl/libxl_utils.c       |  28 +-
 10 files changed, 1356 insertions(+), 123 deletions(-)

-- 
Anthony PERARD


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2019-01-11 12:22 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-04 15:30 [PATCH v8 00/17] libxl: Enable save/restore/migration of a restricted QEMU + libxl__ev_qmp_* Anthony PERARD
2019-01-04 15:30 ` [PATCH v8 01/17] libxl: Enhance libxl__sendmsg_fds to deal with EINTR and EWOULDBLOCK Anthony PERARD
2019-01-04 15:30 ` [PATCH v8 02/17] libxl_qmp: Separate QMP message generation from qmp_send_prepare Anthony PERARD
2019-01-04 15:30 ` [PATCH v8 03/17] libxl_qmp: Change qmp_qemu_check_version to compare version Anthony PERARD
2019-01-04 15:30 ` [PATCH v8 04/17] libxl: Add wrapper around libxl__json_object_to_json JSON Anthony PERARD
2019-01-04 15:30 ` [PATCH v8 05/17] libxl: Design of an async API to issue QMP commands to QEMU Anthony PERARD
2019-01-04 15:30 ` [PATCH v8 06/17] libxl_qmp: Implementation of libxl__ev_qmp_* Anthony PERARD
2019-01-11 12:06   ` Ian Jackson
2019-01-11 12:16     ` Anthony PERARD
2019-01-11 12:21       ` Ian Jackson
2019-01-04 15:30 ` [PATCH v8 07/17] libxl_exec: Add libxl__spawn_initiate_failure Anthony PERARD
2019-01-04 15:30 ` [PATCH v8 08/17] libxl: Add init/dispose of for libxl__domain_build_state Anthony PERARD
2019-01-04 15:30 ` [PATCH v8 09/17] libxl_dm: Pre-open QMP socket for QEMU Anthony PERARD
2019-01-04 15:30 ` [PATCH v8 10/17] libxl: Add dmss_init/dispose for libxl__dm_spawn_state Anthony PERARD
2019-01-04 15:30 ` [PATCH v8 11/17] libxl: QEMU startup sync based on QMP Anthony PERARD
2019-01-04 15:30 ` [PATCH v8 12/17] libxl_qmp: Store advertised QEMU version in libxl__ev_qmp Anthony PERARD
2019-01-04 15:30 ` [PATCH v8 13/17] libxl: Change libxl__domain_suspend_device_model() to be async Anthony PERARD
2019-01-04 15:30 ` [PATCH v8 14/17] libxl: Re-implement domain_suspend_device_model using libxl__ev_qmp Anthony PERARD
2019-01-04 15:30 ` [PATCH v8 15/17] libxl: Remove unused arg from libxl__sendmsg_fds Anthony PERARD
2019-01-04 16:04   ` Ian Jackson
2019-01-04 15:30 ` [PATCH v8 16/17] libxl_json: Remove libxl__json_object_append_to from header Anthony PERARD
2019-01-04 16:03   ` Ian Jackson
2019-01-04 15:30 ` [PATCH v8 17/17] libxl: Add comments to libxl__json_*get* functions Anthony PERARD
2019-01-11 11:55   ` Ian Jackson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.