|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 06/18] tools/libxl: introduce enum type libxl_checkpointed_stream
On Wed, Dec 30, 2015 at 10:28:56AM +0800, Wen Congyang wrote:
> introduce enum type libxl_checkpointed_stream in IDL.
s/introduce/Introduce/
> rename the last argument of migrate_receive from "remus" to
> "checkpointed" since the semantics of this parameter has
> changed.
>
> NOTE:
> libxl_domain_restore_params isn't changed here,
> checkpointed_stream is still an int.
Why? This enum looks so much nicer. Is the reason you do not want to
change it to an enum is because struct domain_create
seems to only have basic types such as 'int' and 'const char' ?
Thanks.
>
> Signed-off-by: Yang Hongyang <hongyang.yang@xxxxxxxxxxxx>
> Signed-off-by: Wen Congyang <wency@xxxxxxxxxxxxxx>
> ---
> tools/libxl/libxl.h | 7 +++++++
> tools/libxl/libxl_create.c | 8 ++++++--
> tools/libxl/libxl_stream_read.c | 7 +++++--
> tools/libxl/libxl_types.idl | 5 +++++
> tools/libxl/xl_cmdimpl.c | 18 ++++++++++++------
> 5 files changed, 35 insertions(+), 10 deletions(-)
>
> diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
> index 05606a7..a01e448 100644
> --- a/tools/libxl/libxl.h
> +++ b/tools/libxl/libxl.h
> @@ -867,6 +867,13 @@ void libxl_mac_copy(libxl_ctx *ctx, libxl_mac *dst,
> libxl_mac *src);
> */
> #define LIBXL_HAVE_DEVICE_MODEL_VERSION_NONE 1
>
> +/*
> + * LIBXL_HAVE_CHECKPOINTED_STREAM
> + *
> + * If this is defined, then libxl_checkpointed_stream exists.
> + */
> +#define LIBXL_HAVE_CHECKPOINTED_STREAM 1
> +
> typedef char **libxl_string_list;
> void libxl_string_list_dispose(libxl_string_list *sl);
> int libxl_string_list_length(const libxl_string_list *sl);
> diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
> index bfa0552..8d3896f 100644
> --- a/tools/libxl/libxl_create.c
> +++ b/tools/libxl/libxl_create.c
> @@ -1015,9 +1015,13 @@ static void domcreate_bootloader_done(libxl__egc *egc,
> dcs->srs.completion_callback = domcreate_stream_done;
>
> if (restore_fd >= 0) {
> - if (checkpointed_stream)
> + switch (checkpointed_stream) {
> + case LIBXL_CHECKPOINTED_STREAM_REMUS:
> libxl__remus_restore_setup(egc, dcs);
> - libxl__stream_read_start(egc, &dcs->srs);
> + /* fall through */
> + case LIBXL_CHECKPOINTED_STREAM_NONE:
> + libxl__stream_read_start(egc, &dcs->srs);
> + }
> return;
> }
>
> diff --git a/tools/libxl/libxl_stream_read.c b/tools/libxl/libxl_stream_read.c
> index 42c087f..6ad2a27 100644
> --- a/tools/libxl/libxl_stream_read.c
> +++ b/tools/libxl/libxl_stream_read.c
> @@ -780,15 +780,18 @@ void libxl__xc_domain_restore_done(libxl__egc *egc,
> void *dcs_void,
> * If the stream is not still alive, we must not continue any work.
> */
> if (libxl__stream_read_inuse(stream)) {
> - if (checkpointed_stream) {
> + switch (checkpointed_stream) {
> + case LIBXL_CHECKPOINTED_STREAM_REMUS:
> /* failover */
> stream_complete(egc, stream, 0);
> - } else {
> + break;
> + case LIBXL_CHECKPOINTED_STREAM_NONE:
> /*
> * Libxc has indicated that it is done with the stream.
> * Resume reading libxl records from it.
> */
> stream_continue(egc, stream);
> + break;
> }
> }
> }
> diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
> index 9658356..3ef11aa 100644
> --- a/tools/libxl/libxl_types.idl
> +++ b/tools/libxl/libxl_types.idl
> @@ -228,6 +228,11 @@ libxl_hdtype = Enumeration("hdtype", [
> (2, "AHCI"),
> ], init_val = "LIBXL_HDTYPE_IDE")
>
> +libxl_checkpointed_stream = Enumeration("checkpointed_stream", [
> + (0, "NONE"),
> + (1, "REMUS"),
> + ])
> +
> #
> # Complex libxl types
> #
> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
> index f9933cb..c1cd696 100644
> --- a/tools/libxl/xl_cmdimpl.c
> +++ b/tools/libxl/xl_cmdimpl.c
> @@ -4424,7 +4424,8 @@ static void migrate_domain(uint32_t domid, const char
> *rune, int debug,
> }
>
> static void migrate_receive(int debug, int daemonize, int monitor,
> - int send_fd, int recv_fd, int remus)
> + int send_fd, int recv_fd,
> + libxl_checkpointed_stream checkpointed)
> {
> uint32_t domid;
> int rc, rc2;
> @@ -4449,7 +4450,7 @@ static void migrate_receive(int debug, int daemonize,
> int monitor,
> dom_info.paused = 1;
> dom_info.migrate_fd = recv_fd;
> dom_info.migration_domname_r = &migration_domname;
> - dom_info.checkpointed_stream = remus;
> + dom_info.checkpointed_stream = checkpointed;
>
> rc = create_domain(&dom_info);
> if (rc < 0) {
> @@ -4460,7 +4461,8 @@ static void migrate_receive(int debug, int daemonize,
> int monitor,
>
> domid = rc;
>
> - if (remus) {
> + switch (checkpointed) {
> + case LIBXL_CHECKPOINTED_STREAM_REMUS:
> /* If we are here, it means that the sender (primary) has crashed.
> * TODO: Split-Brain Check.
> */
> @@ -4493,6 +4495,9 @@ static void migrate_receive(int debug, int daemonize,
> int monitor,
> common_domname, domid, rc);
>
> exit(rc ? -ERROR_FAIL: 0);
> + default:
> + /* do nothing */
> + break;
> }
>
> fprintf(stderr, "migration target: Transfer complete,"
> @@ -4630,7 +4635,8 @@ int main_restore(int argc, char **argv)
>
> int main_migrate_receive(int argc, char **argv)
> {
> - int debug = 0, daemonize = 1, monitor = 1, remus = 0;
> + int debug = 0, daemonize = 1, monitor = 1;
> + libxl_checkpointed_stream checkpointed = LIBXL_CHECKPOINTED_STREAM_NONE;
> int opt;
>
> SWITCH_FOREACH_OPT(opt, "Fedr", NULL, "migrate-receive", 0) {
> @@ -4645,7 +4651,7 @@ int main_migrate_receive(int argc, char **argv)
> debug = 1;
> break;
> case 'r':
> - remus = 1;
> + checkpointed = LIBXL_CHECKPOINTED_STREAM_REMUS;
> break;
> }
>
> @@ -4655,7 +4661,7 @@ int main_migrate_receive(int argc, char **argv)
> }
> migrate_receive(debug, daemonize, monitor,
> STDOUT_FILENO, STDIN_FILENO,
> - remus);
> + checkpointed);
>
> return 0;
> }
> --
> 2.5.0
>
>
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |