All of lore.kernel.org
 help / color / mirror / Atom feed
From: Changlong Xie <xiecl.fnst@cn.fujitsu.com>
To: Max Reitz <mreitz@redhat.com>, qemu devel <qemu-devel@nongnu.org>,
	qemu block <qemu-block@nongnu.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Fam Zheng <famz@redhat.com>, Kevin Wolf <kwolf@redhat.com>,
	Jeff Cody <jcody@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>, John Snow <jsnow@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	Dong Eddie <eddie.dong@intel.com>,
	Jiang Yunhong <yunhong.jiang@intel.com>,
	zhanghailiang <zhang.zhanghailiang@huawei.com>,
	Gonglei <arei.gonglei@huawei.com>,
	Wen Congyang <wency@cn.fujitsu.com>,
	Wang Weiwei <wangww.fnst@cn.fujitsu.com>
Subject: Re: [Qemu-devel] [PATCH v23 09/12] Implement new driver for block replication
Date: Wed, 27 Jul 2016 10:16:17 +0800	[thread overview]
Message-ID: <57981971.5080405@cn.fujitsu.com> (raw)
In-Reply-To: <38640520-a66b-fe88-2b69-9060a3483dab@redhat.com>

On 07/27/2016 12:17 AM, Max Reitz wrote:
> On 26.07.2016 10:15, Changlong Xie wrote:
>> From: Wen Congyang <wency@cn.fujitsu.com>
>>
>> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
>> Signed-off-by: Changlong Xie <xiecl.fnst@cn.fujitsu.com>
>> Signed-off-by: Wang WeiWei <wangww.fnst@cn.fujitsu.com>
>> Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com>
>> Signed-off-by: Gonglei <arei.gonglei@huawei.com>
>> ---
>>   block/Makefile.objs |   1 +
>>   block/replication.c | 658 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>>   2 files changed, 659 insertions(+)
>>   create mode 100644 block/replication.c
>
> [...]
>
>> diff --git a/block/replication.c b/block/replication.c
>> new file mode 100644
>> index 0000000..ec35348
>> --- /dev/null
>> +++ b/block/replication.c
>> @@ -0,0 +1,658 @@
>
> [...]
>
>> +static void replication_start(ReplicationState *rs, ReplicationMode mode,
>> +                              Error **errp)
>> +{
>
> [...]
>
>> +        /* start backup job now */
>> +        error_setg(&s->blocker,
>> +                   "Block device is in use by internal backup job");
>> +
>> +        top_bs = bdrv_lookup_bs(s->top_id, s->top_id, errp);
>
> I think you should pass NULL instead of errp...
>
>> +        if (!top_bs || !check_top_bs(top_bs, bs)) {
>> +            error_setg(errp, "No top_bs or it is invalid");
>
> ...or if you don't, then you should not call this function if top_bs is
> NULL. Otherwise you'll probably get a failed assertion in error_setv()
> because *errp is not NULL.

Thanks for pointing it out. if top_is is NULL, *errp will be set in 
bdrv_lookup_bs(). Then we'll get failed assertion in error_setv(). Will
fix it.

>
>> +            reopen_backing_file(s, false, NULL);
>> +            aio_context_release(aio_context);
>> +            return;
>> +        }
>> +        bdrv_op_block_all(top_bs, s->blocker);
>> +        bdrv_op_unblock(top_bs, BLOCK_OP_TYPE_DATAPLANE, s->blocker);
>
> Shouldn't you make sure that top_bs is a root node? The first patch in

Indeed, it should be a root node

> Kevin's "block: Accept node-name in all node level QMP commands" series
> introduces the bdrv_is_root_node() function for that purpose.
>
> Maybe that check should be put into check_top_bs().
>

I think we just need check top_bs is a root node or not one time before 
stepping in check_top_bs().

if (!top_bs || !bdrv_is_root_node(top_bs) ||
     !check_top_bs(top_bs, bs)) {

> Max
>
>> +
>> +        backup_start("replication-backup", s->secondary_disk->bs,
>> +                     s->hidden_disk->bs, 0, MIRROR_SYNC_MODE_NONE, NULL,
>> +                     BLOCKDEV_ON_ERROR_REPORT, BLOCKDEV_ON_ERROR_REPORT,
>> +                     backup_job_completed, s, NULL, &local_err);
>> +        if (local_err) {
>> +            error_propagate(errp, local_err);
>> +            backup_job_cleanup(s);
>> +            aio_context_release(aio_context);
>> +            return;
>> +        }
>> +        break;
>

  reply	other threads:[~2016-07-27  2:11 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-26  8:15 [Qemu-devel] [PATCH v23 00/12] Block replication for continuous checkpoints Changlong Xie
2016-07-26  8:15 ` [Qemu-devel] [PATCH v23 01/12] unblock backup operations in backing file Changlong Xie
2016-07-26  8:15 ` [Qemu-devel] [PATCH v23 02/12] Backup: clear all bitmap when doing block checkpoint Changlong Xie
2016-07-26  8:15 ` [Qemu-devel] [PATCH v23 03/12] Backup: export interfaces for extra serialization Changlong Xie
2016-07-26  8:15 ` [Qemu-devel] [PATCH v23 04/12] Link backup into block core Changlong Xie
2016-07-26  8:15 ` [Qemu-devel] [PATCH v23 05/12] docs: block replication's description Changlong Xie
2016-07-26  8:15 ` [Qemu-devel] [PATCH v23 06/12] auto complete active commit Changlong Xie
2016-07-26  8:15 ` [Qemu-devel] [PATCH v23 07/12] configure: support replication Changlong Xie
2016-07-26  8:15 ` [Qemu-devel] [PATCH v23 08/12] Introduce new APIs to do replication operation Changlong Xie
2016-07-26  8:15 ` [Qemu-devel] [PATCH v23 09/12] Implement new driver for block replication Changlong Xie
2016-07-26 16:17   ` Max Reitz
2016-07-27  2:16     ` Changlong Xie [this message]
2016-07-26  8:15 ` [Qemu-devel] [PATCH v23 10/12] tests: add unit test case for replication Changlong Xie
2016-07-26  8:15 ` [Qemu-devel] [PATCH v23 11/12] support replication driver in blockdev-add Changlong Xie
2016-07-26 16:22   ` Max Reitz
2016-07-27  2:17     ` Changlong Xie
2016-07-26  8:15 ` [Qemu-devel] [PATCH v23 12/12] MAINTAINERS: add maintainer for replication Changlong Xie
2016-07-26 16:25   ` Max Reitz
2016-07-27  2:18     ` Changlong Xie

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=57981971.5080405@cn.fujitsu.com \
    --to=xiecl.fnst@cn.fujitsu.com \
    --cc=arei.gonglei@huawei.com \
    --cc=armbru@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=eblake@redhat.com \
    --cc=eddie.dong@intel.com \
    --cc=famz@redhat.com \
    --cc=jcody@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=wangww.fnst@cn.fujitsu.com \
    --cc=wency@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 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.