From: Lai Jiangshan <laijs@cn.fujitsu.com>
To: rshriram@cs.ubc.ca
Cc: Ian Campbell <ian.campbell@citrix.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>,
Ian Jackson <ian.jackson@eu.citrix.com>,
"<xen-devel@lists.xen.org>" <xen-devel@lists.xen.org>,
Dong Eddie <eddie.dong@intel.com>,
FNST-Yang Hongyang <yanghy@cn.fujitsu.com>,
Roger Pau Monne <roger.pau@citrix.com>
Subject: Re: [PATCH 6/7] remus: implement remus replicated checkpointing disk
Date: Fri, 4 Apr 2014 11:04:57 +0800 [thread overview]
Message-ID: <533E2159.6080606@cn.fujitsu.com> (raw)
In-Reply-To: <CAP8mzPOYNNqywDgWevr7JNycuCEPsLmS6zjuY9UuPcDHyyop1A@mail.gmail.com>
On 04/04/2014 12:41 AM, Shriram Rajagopalan wrote:
>> @@ -1463,7 +1468,10 @@ static int libxl__remus_domain_resume_callback(void *data)
>> if (libxl__domain_resume(gc, dss->domid, /* Fast Suspend */1))
>> return 0;
>>
>> - /* REMUS TODO: Deal with disk. */
>> + /* Deal with disk. */
>> + if (libxl__remus_disk_preresume(dss->remus_state))
>> + return 0;
>> +
>> return 1;
>> }
>>
>
> Bug. I think I mentioned this last time. Disk needs to be resumed before the
> domain is resumed. Just move the domain resume call below the above
> code snippet.
>
>
>> +typedef struct libxl__remus_disk_type {
>> + /* checkpointing */
>> + int (*postsuspend)(libxl__remus_disk *remus_disk);
>> + int (*preresume)(libxl__remus_disk *remus_disk);
>> + int (*commit)(libxl__remus_disk *remus_disk);
>> +
>> + /*
>> + * Return value:
>> + * 1: the disk is not this type or the script is still running
>> + * 0: the disk is this type
>> + * -1: error
>> + */
>> + int (*match)(libxl__domain_suspend_state *dss,
>> + const libxl_device_disk *disk,
>> + libxl_async_exec *async_exec,
>> + void *disk_state);
>> +
>> + /*
>> + * This is synchronous callback. Return value:
>> + * 0: setup is done
>> + * -1: error
>> + *
>> + */
>> + int (*setup)(libxl__remus_disk *remus_disk);
>> +
>> + /*
>> + * Return value:
>> + * 1: the script is still running
>> + * 0: the script is done
>> + * -1: error
>> + */
>> + int (*teardown)(libxl__remus_disk *remus_disk,
>> + libxl_async_exec *async_exec);
>> +
>> + /* the size of the private data */
>> + int size;
>> +} libxl__remus_disk_type;
>> +
>
>
> This vtable approach is neat. I am fine with the current disk
> checkpoint approach you have taken.
>
> Something that might be worth thinking about:
> The old remus code used this approach for both the disk and network buffering.
> Given that this code is going in a similar direction, I suggest
> hoisting this structure
> up to an abstract buffer type, with setup, teardown, postsuspend, preresume and
> commit callbacks.
>
> For disks, semantically,
> setup [..]
> teardown [..]
> postsuspend [start flushing buffered writes to backup host]
> preresume [wait until all writes have been flushed to backup host]
> commit [no-op]
>
> For network devices, semantically,
> setup [..]
> teardown [..]
> postsuspend [no-op]
> preresume [start_new_epoch - libnl call]
> commit [release_prev_epoch - libnl call]
>
> This way, in domain_suspend_done, the only thing we need to do is
> foreach remus buffer
> buffer.postsuspend()
>
> Similarly, in resume_callback()
>
> foreach remus buffer
> buffer.preresume()
> domain_resume()
>
>
> in remus_checkpoint_dm_saved()
> foreach remus buffer
> buffer.commit()
>
> Lai, I can take an crack at it if you would like.
>
Your idea is great, I look forward to your work on it.
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel
> .
>
next prev parent reply other threads:[~2014-04-04 3:04 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-02 11:04 [PATCH V8 0/8] Remus/Libxl: Network buffering support 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 [this message]
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
-- strict thread matches above, loose matches on Subject: below --
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
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
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=533E2159.6080606@cn.fujitsu.com \
--to=laijs@cn.fujitsu.com \
--cc=andrew.cooper3@citrix.com \
--cc=eddie.dong@intel.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.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=yanghy@cn.fujitsu.com \
--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.