All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yang Hongyang <yanghy@cn.fujitsu.com>
To: Wei Liu <wei.liu2@citrix.com>
Cc: ian.campbell@citrix.com, wency@cn.fujitsu.com,
	andrew.cooper3@citrix.com, yunhong.jiang@intel.com,
	eddie.dong@intel.com, xen-devel@lists.xen.org,
	guijianfeng@cn.fujitsu.com, rshriram@cs.ubc.ca,
	ian.jackson@eu.citrix.com
Subject: Re: [PATCH v2 COLOPre 10/13] tools/libxl: Add back channel to allow migration target send data back
Date: Mon, 15 Jun 2015 09:33:16 +0800	[thread overview]
Message-ID: <557E2B5C.8070208@cn.fujitsu.com> (raw)
In-Reply-To: <20150612125429.GO14606@zion.uk.xensource.com>



On 06/12/2015 08:54 PM, Wei Liu wrote:
> On Mon, Jun 08, 2015 at 11:43:14AM +0800, Yang Hongyang wrote:
>> From: Wen Congyang <wency@cn.fujitsu.com>
>>
>> In colo mode, slave needs to send data to master, but the io_fd
>> only can be written in master, and only can be read in slave.
>> Save recv_fd in domain_suspend_state, and send_fd in
>> domain_create_state.
>>
>
> You failed to mention in commit message new structures are introduced in
> IDL.
>
>> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
>> Signed-off-by: Yang Hongyang <yanghy@cn.fujitsu.com>
>> ---
>>   tools/libxl/libxl.c          |  2 +-
>>   tools/libxl/libxl_create.c   | 14 ++++++++++----
>>   tools/libxl/libxl_internal.h |  2 ++
>>   tools/libxl/libxl_types.idl  |  7 +++++++
>>   tools/libxl/xl_cmdimpl.c     |  7 +++++++
>
> You also need to add LIBXL_HAVE in libxl.h.
>
>>   5 files changed, 27 insertions(+), 5 deletions(-)
>>
>> diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
>> index 5c843c2..36b97fe 100644
>> --- a/tools/libxl/libxl.c
>> +++ b/tools/libxl/libxl.c
>> @@ -832,7 +832,7 @@ int libxl_domain_remus_start(libxl_ctx *ctx, libxl_domain_remus_info *info,
>>       dss->callback = remus_failover_cb;
>>       dss->domid = domid;
>>       dss->fd = send_fd;
>> -    /* TODO do something with recv_fd */
>> +    dss->recv_fd = recv_fd;
>>       dss->type = type;
>>       dss->live = 1;
>>       dss->debug = 0;
>> diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
>> index 86384d2..bd8149c 100644
>> --- a/tools/libxl/libxl_create.c
>> +++ b/tools/libxl/libxl_create.c
>> @@ -1577,8 +1577,8 @@ static void domain_create_cb(libxl__egc *egc,
>>                                int rc, uint32_t domid);
>>
>>   static int do_domain_create(libxl_ctx *ctx, libxl_domain_config *d_config,
>> -                            uint32_t *domid,
>> -                            int restore_fd, int checkpointed_stream,
>> +                            uint32_t *domid, int restore_fd,
>> +                            int send_fd, int checkpointed_stream,
>>                               const libxl_asyncop_how *ao_how,
>>                               const libxl_asyncprogress_how *aop_console_how)
>>   {
>> @@ -1591,6 +1591,7 @@ static int do_domain_create(libxl_ctx *ctx, libxl_domain_config *d_config,
>>       libxl_domain_config_init(&cdcs->dcs.guest_config_saved);
>>       libxl_domain_config_copy(ctx, &cdcs->dcs.guest_config_saved, d_config);
>>       cdcs->dcs.restore_fd = restore_fd;
>> +    cdcs->dcs.send_fd = send_fd;
>>       cdcs->dcs.callback = domain_create_cb;
>>       cdcs->dcs.checkpointed_stream = checkpointed_stream;
>>       libxl__ao_progress_gethow(&cdcs->dcs.aop_console_how, aop_console_how);
>> @@ -1619,7 +1620,7 @@ int libxl_domain_create_new(libxl_ctx *ctx, libxl_domain_config *d_config,
>>                               const libxl_asyncop_how *ao_how,
>>                               const libxl_asyncprogress_how *aop_console_how)
>>   {
>> -    return do_domain_create(ctx, d_config, domid, -1, 0,
>> +    return do_domain_create(ctx, d_config, domid, -1, -1, 0,
>>                               ao_how, aop_console_how);
>>   }
>>
>> @@ -1629,7 +1630,12 @@ int libxl_domain_create_restore(libxl_ctx *ctx, libxl_domain_config *d_config,
>>                                   const libxl_asyncop_how *ao_how,
>>                                   const libxl_asyncprogress_how *aop_console_how)
>>   {
>> -    return do_domain_create(ctx, d_config, domid, restore_fd,
>> +    int send_fd = -1;
>> +
>> +    if (params->checkpointed_stream == LIBXL_CHECKPOINTED_STREAM_COLO)
>> +        send_fd = params->send_fd;
>> +
>> +    return do_domain_create(ctx, d_config, domid, restore_fd, send_fd,
>>                               params->checkpointed_stream, ao_how, aop_console_how);
>>   }
>>
>> diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
>> index fbbae93..6d214b5 100644
>> --- a/tools/libxl/libxl_internal.h
>> +++ b/tools/libxl/libxl_internal.h
>> @@ -2874,6 +2874,7 @@ struct libxl__domain_save_state {
>>
>>       uint32_t domid;
>>       int fd;
>> +    int recv_fd;
>>       libxl_domain_type type;
>>       int live;
>>       int debug;
>> @@ -3143,6 +3144,7 @@ struct libxl__domain_create_state {
>>       libxl_domain_config *guest_config;
>>       libxl_domain_config guest_config_saved; /* vanilla config */
>>       int restore_fd;
>> +    int send_fd;
>>       libxl__domain_create_cb *callback;
>>       libxl_asyncprogress_how aop_console_how;
>>       /* private to domain_create */
>> diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
>> index 23f27d4..8a3d7ba 100644
>> --- a/tools/libxl/libxl_types.idl
>> +++ b/tools/libxl/libxl_types.idl
>> @@ -198,6 +198,12 @@ libxl_viridian_enlightenment = Enumeration("viridian_enlightenment", [
>>       (3, "reference_tsc"),
>>       ])
>>
>> +libxl_checkpointed_stream = Enumeration("checkpointed_stream", [
>> +    (0, "NONE"),
>> +    (1, "REMUS"),
>> +    (2, "COLO"),
>> +    ], init_val = 0)
>
> The default init_val is 0 so you don't need to write it down.

Okay.

>
>> +
>>   #
>>   # Complex libxl types
>>   #
>> @@ -346,6 +352,7 @@ libxl_domain_create_info = Struct("domain_create_info",[
>>
>>   libxl_domain_restore_params = Struct("domain_restore_params", [
>>       ("checkpointed_stream", integer),
>> +    ("send_fd", integer),
>
> I'm not entirely sure if we want to bury an extra argument here.
>
> After looking at code I think you're trying to work around API
> limitation. I think we are safe to extend the API -- we've already done
> that before. See libxl.h around line 990.
>
> Ian and Ian, what do you think?
>
>>       ])
>>
>>   libxl_domain_sched_params = Struct("domain_sched_params",[
>> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
>> index c858068..adfadd1 100644
>> --- a/tools/libxl/xl_cmdimpl.c
>> +++ b/tools/libxl/xl_cmdimpl.c
>
> I would also suggest you rename the last argument of migrate_receive in
> this file from "remus" to "checkpointed_stream_type" since the semantics
> of that parameter has changed.

I've renamed it to "checkpointed".

>
> Wei.
> .
>

-- 
Thanks,
Yang.

  parent reply	other threads:[~2015-06-15  1:33 UTC|newest]

Thread overview: 106+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-08  3:43 [PATCH v2 COLOPre 00/13] Prerequisite patches for COLO Yang Hongyang
2015-06-08  3:43 ` [PATCH v2 COLOPre 01/13] libxc/restore: fix error handle of process_record Yang Hongyang
2015-06-08  9:24   ` Andrew Cooper
2015-06-08  9:37     ` Yang Hongyang
2015-06-08  9:39       ` Andrew Cooper
2015-06-10 14:55   ` Ian Campbell
2015-06-11  2:10     ` Yang Hongyang
2015-06-08  3:43 ` [PATCH v2 COLOPre 02/13] tools/libxc: support to resume uncooperative HVM guests Yang Hongyang
2015-06-10 15:18   ` Ian Campbell
2015-06-11  2:42     ` Wen Congyang
2015-06-11  8:44       ` Ian Campbell
2015-06-11  8:56         ` Wen Congyang
2015-06-11  9:41           ` Ian Campbell
2015-06-08  3:43 ` [PATCH v2 COLOPre 03/13] libxc/restore: zero ioreq page only one time Yang Hongyang
2015-06-08  9:46   ` Andrew Cooper
2015-06-08  9:49     ` Andrew Cooper
2015-06-08  9:58     ` Yang Hongyang
2015-06-08 10:15       ` Andrew Cooper
2015-06-09  0:59         ` Yang Hongyang
2015-06-09  7:30           ` Andrew Cooper
2015-06-10  5:26             ` Yang Hongyang
2015-06-10  7:44               ` Andrew Cooper
2015-06-10  9:06                 ` Wen Congyang
2015-06-10 10:08                   ` Andrew Cooper
2015-06-10 10:35                     ` Paul Durrant
2015-06-10 10:40                   ` Paul Durrant
2015-06-10 10:54                     ` Wen Congyang
2015-06-10 10:58                       ` Paul Durrant
2015-06-10 11:37                         ` Wen Congyang
2015-06-10 11:47                           ` Paul Durrant
2015-06-11  1:13                             ` Wen Congyang
2015-06-11  8:32                               ` Paul Durrant
2015-06-11  8:48                                 ` Wen Congyang
2015-06-11 10:20                                   ` Paul Durrant
2015-06-11 11:14                                     ` Wen Congyang
2015-06-11 12:54                                       ` Yang Hongyang
2015-06-12  3:39                                         ` Yang Hongyang
2015-06-11 12:58                                     ` Yang Hongyang
2015-06-11 13:25                                       ` Paul Durrant
2015-06-12  3:22                                         ` Wen Congyang
2015-06-12  7:41                                           ` Paul Durrant
2015-06-12 10:26                                             ` Wen Congyang
2015-06-12 10:54                                               ` Paul Durrant
2015-06-12 11:09                                                 ` Wen Congyang
2015-06-12 11:48                                                   ` Paul Durrant
2015-06-12 15:04                                                     ` Wen Congyang
2015-06-12 15:31                                                       ` Paul Durrant
2015-06-13  5:58                                                         ` Wen Congyang
2015-06-08  3:43 ` [PATCH v2 COLOPre 04/13] tools/libxc: export xc_bitops.h Yang Hongyang
2015-06-08 10:04   ` Yang Hongyang
2015-06-10 15:20   ` Ian Campbell
2015-06-11  2:07     ` Yang Hongyang
2015-06-11  8:41       ` Ian Campbell
2015-06-11 10:45         ` Andrew Cooper
2015-06-11 10:55           ` Ian Campbell
2015-06-15  1:50             ` Yang Hongyang
2015-06-08  3:43 ` [PATCH v2 COLOPre 05/13] tools/libxl: introduce a new API libxl__domain_restore() to load qemu state Yang Hongyang
2015-06-10 15:35   ` Ian Campbell
2015-06-11  2:09     ` Yang Hongyang
2015-06-11  8:43       ` Ian Campbell
2015-06-11  8:55         ` Yang Hongyang
2015-06-11  9:41           ` Ian Campbell
2015-06-08  3:43 ` [PATCH v2 COLOPre 06/13] tools/libxl: Introduce a new internal API libxl__domain_unpause() Yang Hongyang
2015-06-10 15:37   ` Ian Campbell
2015-06-11  2:21     ` Yang Hongyang
2015-06-11  8:43       ` Ian Campbell
2015-06-11  9:09         ` Wen Congyang
2015-06-11  9:42           ` Ian Campbell
2015-06-11  9:48             ` Wen Congyang
2015-06-12 11:23             ` Ian Jackson
2015-06-08  3:43 ` [PATCH v2 COLOPre 07/13] tools/libxl: Update libxl__domain_unpause() to support qemu-xen Yang Hongyang
2015-06-12 12:33   ` Wei Liu
2015-06-15  1:29     ` Yang Hongyang
2015-06-15 16:22       ` Wei Liu
2015-06-17  9:02         ` Yang Hongyang
2015-06-08  3:43 ` [PATCH v2 COLOPre 08/13] tools/libxl: introduce libxl__domain_common_switch_qemu_logdirty() Yang Hongyang
2015-06-16 10:45   ` Ian Campbell
2015-06-08  3:43 ` [PATCH v2 COLOPre 09/13] tools/libxl: Update libxl_save_msgs_gen.pl to support return data from xl to xc Yang Hongyang
2015-06-16 10:49   ` Ian Campbell
2015-06-16 10:54     ` Wen Congyang
2015-06-16 10:56       ` Ian Jackson
2015-06-16 11:01     ` Ian Jackson
2015-06-16 11:05   ` Ian Jackson
2015-06-16 14:19     ` Yang Hongyang
2015-06-08  3:43 ` [PATCH v2 COLOPre 10/13] tools/libxl: Add back channel to allow migration target send data back Yang Hongyang
2015-06-12 12:54   ` Wei Liu
2015-06-12 15:04     ` Ian Jackson
2015-06-15  1:38       ` Yang Hongyang
2015-06-16 10:52         ` Ian Campbell
2015-06-16 10:58           ` Ian Jackson
2015-06-15  1:33     ` Yang Hongyang [this message]
2015-06-08  3:43 ` [PATCH v2 COLOPre 11/13] tools/libxl: rename remus device to checkpoint device Yang Hongyang
2015-06-12 13:30   ` Wei Liu
2015-06-12 13:35     ` Wei Liu
2015-06-12 14:57       ` Ian Jackson
2015-06-15  1:45         ` Yang Hongyang
2015-06-15 16:24           ` Wei Liu
2015-06-16 10:53             ` Ian Campbell
2015-06-25  5:00               ` Yang Hongyang
2015-06-25  9:09                 ` Wei Liu
2015-06-25  9:16                   ` Yang Hongyang
2015-06-08  3:43 ` [PATCH v2 COLOPre 12/13] tools/libxl: adjust the indentation Yang Hongyang
2015-06-16 10:53   ` Ian Campbell
2015-06-08  3:43 ` [PATCH v2 COLOPre 13/13] tools/libxl: don't touch remus in checkpoint_device Yang Hongyang
2015-06-12 13:28   ` Wei Liu
2015-06-15  1:46     ` Yang Hongyang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=557E2B5C.8070208@cn.fujitsu.com \
    --to=yanghy@cn.fujitsu.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=eddie.dong@intel.com \
    --cc=guijianfeng@cn.fujitsu.com \
    --cc=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=rshriram@cs.ubc.ca \
    --cc=wei.liu2@citrix.com \
    --cc=wency@cn.fujitsu.com \
    --cc=xen-devel@lists.xen.org \
    --cc=yunhong.jiang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.