mbox series

[00/35] libxl refactoring to use ev_qmp (with API changes)

Message ID 20190802153606.32061-1-anthony.perard@citrix.com (mailing list archive)
Headers show
Series libxl refactoring to use ev_qmp (with API changes) | expand

Message

Anthony PERARD Aug. 2, 2019, 3:35 p.m. UTC
Hi,

On the quest to have QEMU depriviledge, we need to make quite a few changes to
libxl. This patch series rework quite a few libxl feature to use libxl__ev_qmp,
which is the new asynchronous way of communicating with QEMU in libxl.

Unfortunately, some libxl functions (in the public API) are supposed to be
synchronous but are communicating with QEMU before returning. So those functions
are made asynchronous with an additional parameter `libxl_asyncop_how'.

Functions that are changes:
    - libxl_domain_unpause
    - libxl_domain_pause
    - libxl_send_trigger
    - libxl_set_vcpuonline
    - libxl_retrieve_domain_configuration
    - libxl_qemu_monitor_command

This series depends on both:
    - [PATCH v2 0/9] libxl: New slow lock + fix libxl_cdrom_insert with QEMU depriv
    - [PATCH 00/15] Some cleanup of libxl

Patch series available in this git branch:
https://xenbits.xen.org/git-http/people/aperard/xen-unstable.git br.libxl-ev_qmp-refactoring-v1

Cheers,

Anthony PERARD (35):
  libxl: Make libxl_domain_unpause async
  libxl: Make libxl_send_trigger async
  libxl: Make libxl_set_vcpuonline async
  libxl: Make libxl_retrieve_domain_configuration async
  libxl: Make libxl_qemu_monitor_command async
  libxl: Use ev_qmp for switch_qemu_xen_logdirty
  libxl: Move "qmp_initializations" to libxl_dm
  libxl: Replace libxl__qmp_initializations by ev_qmp calls
  libxl: Deprecate libxl__domain_{unpause,resume}
  libxl: Re-introduce libxl__domain_resume
  libxl_domain: Convert libxl_domain_resume to use libxl__domain_resume
  libxl: Re-introduce libxl__domain_unpause
  libxl_dm: Update libxl__spawn_stub_dm to use libxl__domain_unpause
  libxl_domain: Convert libxl_domain_unpause to use
    libxl__domain_unpause
  libxl: Inline do_usbdev_add into libxl__device_usbdev_add
  libxl: Inline do_usbdev_remove into libxl__device_usbdev_remove
  libxl: Add libxl__ev_qmp to libxl__ao_device
  libxl: Add device_{config,type} to libxl__ao_device
  libxl_usb: Make libxl__device_usbctrl_add uses ev_qmp
  libxl_usb: Make libxl__initiate_device_usbctrl_remove uses ev_qmp
  libxl_usb: Make libxl__device_usbdev_add uses ev_qmp
  libxl: Use aodev for libxl__device_usbdev_remove
  libxl: libxl__initiate_device_usbdev_remove now use ev_qmp
  libxl: Remove libxl__qmp_run_command_flexarray
  libxl_pci: Coding style of do_pci_add
  libxl_pci: Only check if qemu-dm is running in qemu-trad case
  libxl_pci: Use libxl__ao_device with libxl__device_pci_add
  libxl_pci: Use ev_qmp in do_pci_add
  libxl_pci: Use libxl__ao_device with pci_remove
  libxl_pci: Use ev_qmp for pci_remove
  libxl: Use ev_qmp for libxl_send_trigger
  libxl: Use ev_qmp in libxl_set_vcpuonline
  libxl: Extract qmp_parse_query_cpus
  libxl: libxl_retrieve_domain_configuration now uses ev_qmp
  libxl: libxl_qemu_monitor_command now uses ev_qmp

 tools/libxl/libxl.h              |  77 ++-
 tools/libxl/libxl_colo_restore.c |   4 +-
 tools/libxl/libxl_colo_save.c    |   4 +-
 tools/libxl/libxl_create.c       |  10 -
 tools/libxl/libxl_device.c       |   2 +
 tools/libxl/libxl_dm.c           | 239 +++++++-
 tools/libxl/libxl_dom_save.c     |  41 +-
 tools/libxl/libxl_dom_suspend.c  | 198 ++++++-
 tools/libxl/libxl_domain.c       | 627 ++++++++++++++++----
 tools/libxl/libxl_internal.h     |  86 ++-
 tools/libxl/libxl_pci.c          | 966 ++++++++++++++++++++++++++-----
 tools/libxl/libxl_qmp.c          | 471 ++-------------
 tools/libxl/libxl_remus.c        |   2 +-
 tools/libxl/libxl_usb.c          | 598 +++++++++++++------
 tools/xl/xl_cpupool.c            |   2 +-
 tools/xl/xl_info.c               |   3 +-
 tools/xl/xl_migrate.c            |   4 +-
 tools/xl/xl_misc.c               |   6 +-
 tools/xl/xl_saverestore.c        |   5 +-
 tools/xl/xl_vcpu.c               |   2 +-
 tools/xl/xl_vmcontrol.c          |  13 +-
 21 files changed, 2427 insertions(+), 933 deletions(-)

Comments

Ian Jackson Sept. 17, 2019, 5:44 p.m. UTC | #1
Anthony PERARD writes ("[PATCH 00/35] libxl refactoring to use ev_qmp (with API changes)"):
> On the quest to have QEMU depriviledge, we need to make quite a few changes to
> libxl. This patch series rework quite a few libxl feature to use libxl__ev_qmp,
> which is the new asynchronous way of communicating with QEMU in libxl.

Thank you for this work!

I was a bit afraid it would be hard reading but most of it was very
easy.  Thanks for breaking things up so nicely; that made my job a lot
better.

I think I am now up to date on all this.  Please let me know what you
think of my requests for further patch-atomisation.  If that's going
to be a lot of work I will simply stare at the code harder myself.

Regards,
Ian.