From: Max Reitz <mreitz@redhat.com>
To: Wen Congyang <wency@cn.fujitsu.com>,
qemu devel <qemu-devel@nongnu.org>, Kevin Wolf <kwolf@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>,
Jiang Yunhong <yunhong.jiang@intel.com>,
Dong Eddie <eddie.dong@intel.com>,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
Gonglei <arei.gonglei@huawei.com>,
Yang Hongyang <yanghy@cn.fujitsu.com>,
zhanghailiang <zhang.zhanghailiang@huawei.com>
Subject: Re: [Qemu-devel] [RFC PATCH 04/14] Add new block driver interfaces to control disk replication
Date: Mon, 23 Feb 2015 15:57:14 -0500 [thread overview]
Message-ID: <54EB942A.9000905@redhat.com> (raw)
In-Reply-To: <1423710438-14377-5-git-send-email-wency@cn.fujitsu.com>
On 2015-02-11 at 22:07, Wen Congyang wrote:
> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
> Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com>
> Signed-off-by: Gonglei <arei.gonglei@huawei.com>
> ---
> block.c | 36 ++++++++++++++++++++++++++++++++++++
> include/block/block.h | 10 ++++++++++
> include/block/block_int.h | 12 ++++++++++++
> 3 files changed, 58 insertions(+)
>
> diff --git a/block.c b/block.c
> index 210fd5f..2335af1 100644
> --- a/block.c
> +++ b/block.c
> @@ -6156,3 +6156,39 @@ BlockAcctStats *bdrv_get_stats(BlockDriverState *bs)
> {
> return &bs->stats;
> }
> +
> +int bdrv_start_replication(BlockDriverState *bs, int mode)
> +{
> + BlockDriver *drv = bs->drv;
> + if (drv && drv->bdrv_start_replication) {
> + return drv->bdrv_start_replication(bs, mode);
> + } else if (bs->file) {
> + return bdrv_start_replication(bs->file, mode);
> + }
> +
> + return -1;
I'd prefer returning -errno here (like -ENOTSUP). Alternatively, you may
want to use Error objects (which would probably actually be the
preferable way).
> +}
> +
> +int bdrv_do_checkpoint(BlockDriverState *bs)
> +{
> + BlockDriver *drv = bs->drv;
> + if (drv && drv->bdrv_do_checkpoint) {
> + return drv->bdrv_do_checkpoint(bs);
> + } else if (bs->file) {
> + return bdrv_do_checkpoint(bs->file);
> + }
> +
> + return -1;
Same here.
> +}
> +
> +int bdrv_stop_replication(BlockDriverState *bs)
> +{
> + BlockDriver *drv = bs->drv;
> + if (drv && drv->bdrv_stop_replication) {
> + return drv->bdrv_stop_replication(bs);
> + } else if (bs->file) {
> + return bdrv_stop_replication(bs->file);
> + }
> +
> + return -1;
And here.
> +}
> diff --git a/include/block/block.h b/include/block/block.h
> index 321295e..632b9fc 100644
> --- a/include/block/block.h
> +++ b/include/block/block.h
> @@ -557,4 +557,14 @@ void bdrv_flush_io_queue(BlockDriverState *bs);
>
> BlockAcctStats *bdrv_get_stats(BlockDriverState *bs);
>
> +/* Checkpoint control, called in migration/checkpoint thread */
> +enum {
> + COLO_UNPROTECTED_MODE = 0,
> + COLO_PRIMARY_MODE,
> + COLO_SECONDARY_MODE,
> +};
I have a feeling that you may want to define these values through QAPI...
There's nothing wrong with this patch, but I don't yet really know what
you want to do with these functions (the doc didn't really help me with
them), so I'll have to look into the rest of the series before I can
really say something useful about it.
Max
> +int bdrv_start_replication(BlockDriverState *bs, int mode);
> +int bdrv_do_checkpoint(BlockDriverState *bs);
> +int bdrv_stop_replication(BlockDriverState *bs);
> +
> #endif
> diff --git a/include/block/block_int.h b/include/block/block_int.h
> index 7ad1950..603f704 100644
> --- a/include/block/block_int.h
> +++ b/include/block/block_int.h
> @@ -273,6 +273,18 @@ struct BlockDriver {
> void (*bdrv_io_unplug)(BlockDriverState *bs);
> void (*bdrv_flush_io_queue)(BlockDriverState *bs);
>
> +
> + /* Checkpoint control, called in migration/checkpoint thread */
> + int (*bdrv_start_replication)(BlockDriverState *bs, int mode);
> + /*
> + * Drop Disk buffer when doing checkpoint.
> + */
> + int (*bdrv_do_checkpoint)(BlockDriverState *bs);
> + /* After failover, we should flush Disk buffer into secondary disk
> + * and stop block replication.
> + */
> + int (*bdrv_stop_replication)(BlockDriverState *bs);
> +
> QLIST_ENTRY(BlockDriver) list;
> };
>
next prev parent reply other threads:[~2015-02-23 20:57 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-12 3:07 [Qemu-devel] [RFC PATCH 00/14] Block replication for continuous checkpoints Wen Congyang
2015-02-12 3:07 ` [Qemu-devel] [RFC PATCH 01/14] docs: block replication's description Wen Congyang
2015-02-12 7:21 ` Fam Zheng
2015-02-12 7:40 ` Wen Congyang
2015-02-12 8:44 ` Fam Zheng
2015-02-12 9:33 ` Wen Congyang
2015-02-12 9:44 ` Fam Zheng
2015-02-12 10:11 ` Wen Congyang
2015-02-12 10:26 ` famz
2015-02-13 5:09 ` Wen Congyang
2015-02-13 7:01 ` Fam Zheng
2015-02-13 20:29 ` John Snow
2015-03-03 7:53 ` Wen Congyang
2015-03-03 7:59 ` Fam Zheng
2015-03-03 12:12 ` Wen Congyang
2015-03-11 6:44 ` Wen Congyang
2015-03-11 6:49 ` Fam Zheng
2015-03-11 7:01 ` Wen Congyang
2015-03-11 7:04 ` Fam Zheng
2015-03-11 7:12 ` Wen Congyang
2015-03-13 9:01 ` Wen Congyang
2015-03-13 9:05 ` Fam Zheng
2015-03-16 6:19 ` Wen Congyang
2015-03-25 12:41 ` Paolo Bonzini
2015-02-12 9:36 ` Hongyang Yang
2015-02-12 9:46 ` Fam Zheng
2015-02-24 7:50 ` Wen Congyang
2015-02-25 2:46 ` Fam Zheng
2015-02-25 8:36 ` Wen Congyang
2015-02-25 8:58 ` Fam Zheng
2015-02-25 9:58 ` Wen Congyang
2015-02-26 6:38 ` Wen Congyang
2015-02-26 8:44 ` Fam Zheng
2015-02-26 9:07 ` Wen Congyang
2015-02-26 10:02 ` Fam Zheng
2015-02-27 2:27 ` Wen Congyang
2015-02-27 2:32 ` Fam Zheng
2015-02-25 8:11 ` Wen Congyang
2015-02-25 8:18 ` Fam Zheng
2015-02-25 9:10 ` Wen Congyang
2015-02-25 9:45 ` Fam Zheng
2015-03-04 16:35 ` Dr. David Alan Gilbert
2015-03-05 1:03 ` Wen Congyang
2015-03-05 19:04 ` Dr. David Alan Gilbert
2015-02-12 3:07 ` [Qemu-devel] [RFC PATCH 02/14] quorom: add a new read pattern Wen Congyang
2015-02-12 6:42 ` Gonglei
2015-02-23 20:36 ` Max Reitz
2015-02-23 21:56 ` Eric Blake
2015-02-12 3:07 ` [Qemu-devel] [RFC PATCH 03/14] quorum: ignore 0-length child Wen Congyang
2015-02-23 20:43 ` Max Reitz
2015-02-24 2:33 ` Wen Congyang
2015-03-18 5:29 ` Wen Congyang
2015-03-18 12:57 ` Max Reitz
2015-02-12 3:07 ` [Qemu-devel] [RFC PATCH 04/14] Add new block driver interfaces to control disk replication Wen Congyang
2015-02-23 20:57 ` Max Reitz [this message]
2015-02-23 21:58 ` Eric Blake
2015-02-12 3:07 ` [Qemu-devel] [RFC PATCH 05/14] quorom: implement block driver interfaces for block replication Wen Congyang
2015-02-23 21:22 ` Max Reitz
2015-02-12 3:07 ` [Qemu-devel] [RFC PATCH 06/14] NBD client: connect to nbd server later Wen Congyang
2015-02-23 21:31 ` Max Reitz
2015-02-25 2:23 ` Wen Congyang
2015-02-25 14:22 ` Max Reitz
2015-02-26 14:07 ` Paolo Bonzini
2015-02-12 3:07 ` [Qemu-devel] [RFC PATCH 07/14] NBD client: implement block driver interfaces for block replication Wen Congyang
2015-02-23 21:41 ` Max Reitz
2015-02-26 14:08 ` Paolo Bonzini
2015-02-12 3:07 ` [Qemu-devel] [RFC PATCH 08/14] block: add a new API to create a hidden BlockBackend Wen Congyang
2015-02-23 21:48 ` Max Reitz
2015-02-12 3:07 ` [Qemu-devel] [RFC PATCH 09/14] block: give backing image its own BlockBackend Wen Congyang
2015-02-23 21:53 ` Max Reitz
2015-02-12 3:07 ` [Qemu-devel] [RFC PATCH 10/14] allow the backing image access the origin BlockDriverState Wen Congyang
2015-02-23 22:01 ` Max Reitz
2015-02-12 3:07 ` [Qemu-devel] [RFC PATCH 11/14] allow writing to the backing file Wen Congyang
2015-02-23 22:03 ` Max Reitz
2015-02-26 14:15 ` Paolo Bonzini
2015-02-12 3:07 ` [Qemu-devel] [RFC PATCH 12/14] Add disk buffer for block replication Wen Congyang
2015-02-23 22:27 ` Max Reitz
2015-02-12 3:07 ` [Qemu-devel] [RFC PATCH 13/14] COW: move cow interfaces to a seperate file Wen Congyang
2015-02-12 3:07 ` [Qemu-devel] [RFC PATCH 14/14] COLO: implement a new block driver Wen Congyang
2015-02-23 22:35 ` Max Reitz
2015-02-18 16:26 ` [Qemu-devel] [RFC PATCH 00/14] Block replication for continuous checkpoints Paolo Bonzini
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=54EB942A.9000905@redhat.com \
--to=mreitz@redhat.com \
--cc=arei.gonglei@huawei.com \
--cc=dgilbert@redhat.com \
--cc=eddie.dong@intel.com \
--cc=kwolf@redhat.com \
--cc=laijs@cn.fujitsu.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=wency@cn.fujitsu.com \
--cc=yanghy@cn.fujitsu.com \
--cc=yunhong.jiang@intel.com \
--cc=zhang.zhanghailiang@huawei.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).