There was some confusion about my ack for this series - my apologies. I intended to ack’ it entirely.
Acked-by: Christian Lindig <christian.lindig@cloud.com>
> On 3 Sep 2024, at 12:44, Andrii Sultanov <andrii.sultanov@cloud.com> wrote:
>
> This is a V2 of the "Stabilize Oxenstored's interface with" patch
> series, see V1's cover letter for the motivation of these changes.
>
> Two patches from V1 ("tools/ocaml: Fix OCaml libs rules" and
> "Remove '-cc $(CC)' from OCAMLOPTFLAGS") were commited upstream, so
> they've been dropped from here.
>
> V2 addresses the following review comments and suggestions:
>
> * Split the plugin implementation commit into two - build
> infrastructure-related and implementation itself.
> * Package xenstored_glue interface, since it's needed for an
> out-of-tree oxenstored to build. Additionally package xenstored_glue_dev
> with .ml and .mli files.
> * Clean up unnecessary #define, #include, and fix function parameter
> types as suggested.
> * Improve error handling in xsglue_failwith_xc, additionally version
> xsg.error to avoid potential future conflicts.
> * Drop the GC lock around xc_domain_getinfo_single, and move Int_val
> outside of the blocking_section.
> * Use existing logging facilities in oxenstored
> * Plugin now uses logging function provided by the plugin interface
> (ignoring input by default)
> * domain_getinfolist gets all 32k domains at once instead of listing them
> in chunks, storing information into an array. OCaml interface was simplified
> appropriately. (Cxenstored does not do this at the moment - as far as I
> understand, it also uses the single-domain version of the function).
>
> I've decided against introducing an enum for the shutdown code, as it adds
> additional complexity (and potential reasons for creating a new plugin version)
> without any benefit - oxenstored does not care about its value at the moment.
>
> Patch series on Gitlab for ease of review:
> https://gitlab.com/xen-project/people/asultanov/xen/-/compare/staging...plugin-v3
>
> V2 passed the Gitlab CI: https://gitlab.com/xen-project/people/asultanov/xen/-/pipelines/1437391764
> It was also tested on some hosts.
>
> Andrii Sultanov (3):
> tools/ocaml: Build infrastructure for OCaml dynamic libraries
> ocaml/libs: Implement a dynamically-loaded plugin for
> Xenctrl.domain_getinfo
> tools/oxenstored: Use the plugin for Xenctrl.domain_getinfo
>
> Config.mk | 2 +-
> configure | 7 +
> m4/paths.m4 | 4 +
> tools/configure | 7 +
> tools/ocaml/Makefile | 1 +
> tools/ocaml/Makefile.rules | 17 +-
> tools/ocaml/libs/Makefile | 2 +-
> tools/ocaml/libs/xenstoredglue/META.in | 4 +
> tools/ocaml/libs/xenstoredglue/Makefile | 46 +++++
> .../domain_getinfo_plugin_v1/META.in | 5 +
> .../domain_getinfo_plugin_v1/Makefile | 38 ++++
> .../domain_getinfo_stubs_v1.c | 172 ++++++++++++++++++
> .../domain_getinfo_v1.ml | 36 ++++
> .../domain_getinfo_v1.mli | 0
> .../libs/xenstoredglue/plugin_interface_v1.ml | 28 +++
> .../xenstoredglue/plugin_interface_v1.mli | 36 ++++
> tools/ocaml/xenstored/Makefile | 5 +-
> tools/ocaml/xenstored/domains.ml | 63 +++++--
> tools/ocaml/xenstored/paths.ml.in | 1 +
> 19 files changed, 451 insertions(+), 23 deletions(-)
> create mode 100644 tools/ocaml/libs/xenstoredglue/META.in
> create mode 100644 tools/ocaml/libs/xenstoredglue/Makefile
> create mode 100644 tools/ocaml/libs/xenstoredglue/domain_getinfo_plugin_v1/META.in
> create mode 100644 tools/ocaml/libs/xenstoredglue/domain_getinfo_plugin_v1/Makefile
> create mode 100644 tools/ocaml/libs/xenstoredglue/domain_getinfo_plugin_v1/domain_getinfo_stubs_v1.c
> create mode 100644 tools/ocaml/libs/xenstoredglue/domain_getinfo_plugin_v1/domain_getinfo_v1.ml
> create mode 100644 tools/ocaml/libs/xenstoredglue/domain_getinfo_plugin_v1/domain_getinfo_v1.mli
> create mode 100644 tools/ocaml/libs/xenstoredglue/plugin_interface_v1.ml
> create mode 100644 tools/ocaml/libs/xenstoredglue/plugin_interface_v1.mli
>
> --
> 2.39.2
>