All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hongyang Yang <yanghy@cn.fujitsu.com>
To: Ian Jackson <Ian.Jackson@eu.citrix.com>, rshriram@cs.ubc.ca
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>,
	FNST-Wen Congyang <wency@cn.fujitsu.com>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jiang Yunhong <yunhong.jiang@intel.com>,
	Dong Eddie <eddie.dong@intel.com>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>,
	Roger Pau Monne <roger.pau@citrix.com>,
	Ian Campbell <ian.campbell@citrix.com>
Subject: Re: [PATCH 07/10 V7] libxl: use the API to setup/teardown network buffering [and 1 more messages]
Date: Wed, 7 May 2014 13:42:45 +0800	[thread overview]
Message-ID: <5369C7D5.5040803@cn.fujitsu.com> (raw)
In-Reply-To: <21347.49908.432388.413355@mariner.uk.xensource.com>


[-- Attachment #1.1: Type: text/plain, Size: 3264 bytes --]

Hi Ian:

On 05/03/2014 12:08 AM, Ian Jackson wrote:
> Shriram Rajagopalan writes ("Re: [PATCH 07/10 V7] libxl: use the API to setup/teardown network buffering [and 1 more messages]"):
>> On Wed, Apr 23, 2014 at 11:02 AM, Ian Jackson <Ian.Jackson@eu.citrix.com>
>> wrote:
>>      I think you have basically two options:
>>
>>      1. Make the remus part of this be a fully self-contained standard
>>         asynchronous callback-based suboperation, like libxl__xswait,
>>         libxl__bootloader, et al.
>>
>>         In this case you should rigorously follow the existing patterns,
>>         defining a clear interface between the two parts, providing a
>>         callback function set by the caller, etc.
>>
>>      2. Integrate the remus part into the suspend/resume code in an
>>         ad hoc fashion, with extremely clear comments everywhere about the
>>         expected interface, and no extraneous moving parts.
>>
>>      At the moment you seem to have mixed these two approaches.
>>
>> Sorry, I missed the previous comment of yours. The two options you
>> note are bit more clearer than the previous comment. And I also
>> agree that the current approach is mixing options 1 & 2.
> Right.
>
>> The entire Remus code (executed from start to end) is one giant
>> async op.  Internally, per checkpoint, the code executes for no more
>> than tens of milliseconds at max, with the exception of sleeping
>> until the next checkpoint needs to be taken.
> Yes.
>
>> Doing checkpoint related work (i.e., syscalls to control
>> disk/network buffers) in an async op is an overkill. So, they are
>> integrated into the suspend/resume infrastructure (option 2)
>>
>> The async op is useful (please correct me if I am wrong) if the op
>> runs for a long time, such that you don't want users of libxl to
>> block. Which is exactly why the setup/teardown and the
>> sleep_until_next_checkpoint operations are ao suboperations. (option
>> 1).
> This isn't quite the right distinction.  You should use an
> asynchronous style for anything which might block.  So it is OK to
> synchronously make fast syscalls.  (I assume that the disk/network
> control syscalls are fast.)
>
> And in this context, blocking includes child processes, and calls to
> (u)sleep.
>
>> All said, perhaps, it may be more clear to add a level of indirection:
>>   make domain_suspend_done a callback field in libxl__domain_state.
>>
>> Change all direct callers of domain_suspend_done to invoke this callback.
>>
>> In this way,
>> * domain_suspend -> domain_suspend_done (for normal suspend/save operations)
>> * domain_remus_start->domain_remus_terminated
>>
>> What do you think?
> I'm not sure I quite follow but I think you are still mixing the two
> approaches I discuss above.  I would like you to pick one.
>
> If you're not sure, you should probably pick option 1.

This patchset is based on the current remus implementation (without netbuffer)
witch is integrated into suspend/resume code, if as you suggested we pick option 1,
the whole remus structure needs refactoring.
we're working on it, may take quiet a while.

>
> Thanks,
> Ian.
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel
> .
>


[-- Attachment #1.2: Type: text/html, Size: 4433 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

  parent reply	other threads:[~2014-05-07  5:42 UTC|newest]

Thread overview: 89+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-15  5:38 [PATCH V9 00/12] Remus/Libxl: Network buffering support Yang Hongyang
2014-04-15  5:38 ` [PATCH V9 01/12] introduce an API to async exec scripts Yang Hongyang
2014-04-23 15:44   ` Ian Jackson
2014-04-15  5:38 ` [PATCH V9 02/12] libxl_device: use async exec script api Yang Hongyang
2014-04-23 15:48   ` Ian Jackson
2014-04-15  5:38 ` [PATCH V9 03/12] remus: add libnl3 dependency to autoconf scripts Yang Hongyang
2014-04-15  5:38 ` [PATCH V9 04/12] remus: introduce a function to check whether network buffering is enabled Yang Hongyang
2014-04-23 15:50   ` Ian Jackson
2014-04-23 15:51     ` Shriram Rajagopalan
2014-04-30 14:36       ` Ian Jackson
2014-04-15  5:38 ` [PATCH V9 05/12] remus: remus device core and APIs to setup/teardown Yang Hongyang
2014-04-23 16:02   ` [PATCH 07/10 V7] libxl: use the API to setup/teardown network buffering [and 1 more messages] Ian Jackson
2014-04-23 16:55     ` Shriram Rajagopalan
2014-05-02 16:08       ` Ian Jackson
2014-05-02 21:59         ` Shriram Rajagopalan
2014-05-07  5:42         ` Hongyang Yang [this message]
2014-05-07 13:12           ` Shriram Rajagopalan
2014-05-12 13:18             ` Ian Jackson
2014-05-13  1:41               ` Hongyang Yang
2014-04-15  5:38 ` [PATCH V9 06/12] remus: implement the API for checkpoint Yang Hongyang
2014-04-23 16:04   ` Ian Jackson
2014-05-14  1:46     ` Hongyang Yang
2014-04-15  5:38 ` [PATCH V9 07/12] remus: Remus network buffering core and APIs to setup/teardown Yang Hongyang
2014-04-15  5:38 ` [PATCH V9 08/12] remus: implement the API to buffer/release packages Yang Hongyang
2014-04-23 16:10   ` Ian Jackson
2014-04-23 17:04     ` Shriram Rajagopalan
2014-05-02 16:10       ` Ian Jackson
2014-04-15  5:38 ` [PATCH V9 09/12] libxl: use the API to setup/teardown network buffering Yang Hongyang
2014-04-23 16:12   ` Ian Jackson
2014-04-16  2:55 ` [PATCH 1/2] drbd: implement replicated checkpointing disk Lai Jiangshan
2014-04-16  2:56   ` [PATCH 2/2] remus: support disk replicated checkpointing Lai Jiangshan
2014-04-23  9:53 ` [PATCH V9 00/12] Remus/Libxl: Network buffering support Hongyang Yang
2014-04-23 15:51 ` Ian Jackson
  -- strict thread matches above, loose matches on Subject: below --
2014-04-02 11:04 [PATCH V8 0/8] " Yang Hongyang
2014-02-10  9:19 ` [PATCH 00/10 V7] " Lai Jiangshan
2014-02-10  9:19   ` [PATCH 01/10 V7] remus: add libnl3 dependency to autoconf scripts Lai Jiangshan
2014-02-10  9:19   ` [PATCH 02/10 V7] tools/libxl: update libxl_domain_remus_info Lai Jiangshan
2014-03-03 16:33     ` Ian Jackson
2014-02-10  9:19   ` [PATCH 03/10 V7] tools/libxl: introduce a new structure libxl__remus_state Lai Jiangshan
2014-03-03 16:38     ` Ian Jackson
2014-02-10  9:19   ` [PATCH 04/10 V7] remus: introduce a function to check whether network buffering is enabled Lai Jiangshan
2014-03-03 16:39     ` Ian Jackson
2014-02-10  9:19   ` [PATCH 05/10 V7] remus: Remus network buffering core and APIs to setup/teardown Lai Jiangshan
2014-03-03 17:44     ` Ian Jackson
2014-02-10  9:19   ` [PATCH 06/10 V7] remus: implement the API to buffer/release packages Lai Jiangshan
2014-03-03 17:48     ` Ian Jackson
2014-02-10  9:19   ` [PATCH 07/10 V7] libxl: use the API to setup/teardown network buffering Lai Jiangshan
2014-03-03 17:51     ` Ian Jackson
2014-02-10  9:19   ` [PATCH 08/10 V7] libxl: rename remus_failover_cb() to remus_replication_failure_cb() Lai Jiangshan
2014-03-03 17:52     ` Ian Jackson
2014-02-10  9:19   ` [PATCH 09/10 V7] libxl: control network buffering in remus callbacks Lai Jiangshan
2014-03-03 17:54     ` Ian Jackson
2014-02-10  9:19   ` [PATCH 10/10 V7] libxl: network buffering cmdline switch Lai Jiangshan
2014-03-03 17:58     ` Ian Jackson
2014-02-26  2:31   ` [PATCH 00/10 V7] Remus/Libxl: Network buffering support Lai Jiangshan
2014-02-26  2:53   ` [PATCH RFC] remus: implement remus replicated checkpointing disk Lai Jiangshan
2014-03-10 11:28     ` Ian Jackson
2014-03-10 12:34       ` Lai Jiangshan
2014-03-10 16:19         ` Ian Jackson
2014-03-11 18:10     ` Shriram Rajagopalan
2014-03-12  2:35       ` Lai Jiangshan
2014-03-12  6:23         ` Shriram Rajagopalan
2014-03-12 10:07         ` Ian Campbell
2014-03-12 11:57           ` Lai Jiangshan
2014-03-12 12:17             ` Ian Campbell
2014-03-12 12:28               ` Lai Jiangshan
2014-03-12 10:06       ` Ian Campbell
2014-03-12 12:21         ` Lai Jiangshan
2014-04-02 11:04 ` [PATCH V8 1/8] remus: add libnl3 dependency to autoconf scripts Yang Hongyang
2014-04-02 11:04 ` [PATCH V8 2/8] remus: introduce a function to check whether network buffering is enabled Yang Hongyang
2014-04-02 11:04 ` [PATCH V8 3/8] remus: Remus network buffering core and APIs to setup/teardown Yang Hongyang
2014-04-03 14:06   ` [PATCH 05/10 V7] remus: Remus network buffering core and APIs to setup/teardown [and 1 more messages] Ian Jackson
2014-04-02 11:04 ` [PATCH V8 4/8] remus: implement the API to buffer/release packages Yang Hongyang
2014-04-02 11:04 ` [PATCH V8 5/8] libxl: use the API to setup/teardown network buffering Yang Hongyang
2014-04-02 11:04 ` [PATCH V8 6/8] libxl: rename remus_failover_cb() to remus_replication_failure_cb() Yang Hongyang
2014-04-02 11:04 ` [PATCH V8 7/8] libxl: control network buffering in remus callbacks Yang Hongyang
2014-04-02 11:04 ` [PATCH V8 8/8] libxl: network buffering cmdline switch Yang Hongyang
2014-04-03 12:22   ` [PATCH 1/7] introduce a new function libxl__remus_netbuf_setup_done() Lai Jiangshan
2014-04-03 12:22     ` [PATCH 2/7] introduce a new function libxl__remus_netbuf_teardown_done() Lai Jiangshan
2014-04-03 12:22     ` [PATCH 3/7] introduce an API to async exec scripts Lai Jiangshan
2014-04-03 12:22     ` [PATCH 4/7] netbuffer: use async exec API to exec the netbuffer script Lai Jiangshan
2014-04-03 12:22     ` [PATCH 5/7] netbuf: move dev_id from remus_state to netbuf_state Lai Jiangshan
2014-04-03 12:22     ` [PATCH 6/7] remus: implement remus replicated checkpointing disk Lai Jiangshan
2014-04-03 16:41       ` Shriram Rajagopalan
2014-04-04  3:04         ` Lai Jiangshan
2014-04-03 12:22     ` [PATCH 7/7] drbd: implement " Lai Jiangshan
2014-04-03 16:07       ` Shriram Rajagopalan
2014-04-03 14:08     ` [PATCH 1/7] introduce a new function libxl__remus_netbuf_setup_done() Ian Jackson
2014-04-04  8:53       ` Hongyang Yang

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=5369C7D5.5040803@cn.fujitsu.com \
    --to=yanghy@cn.fujitsu.com \
    --cc=Ian.Jackson@eu.citrix.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=eddie.dong@intel.com \
    --cc=ian.campbell@citrix.com \
    --cc=laijs@cn.fujitsu.com \
    --cc=roger.pau@citrix.com \
    --cc=rshriram@cs.ubc.ca \
    --cc=stefano.stabellini@eu.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.