From: Jeff Cody <jcody@redhat.com>
To: Fam Zheng <famz@redhat.com>
Cc: kwolf@redhat.com, armbru@redhat.com, hbrock@redhat.com,
qemu-devel@nongnu.org, rjones@redhat.com, imain@redhat.com,
Stefan Hajnoczi <stefanha@redhat.com>,
pbonzini@redhat.com
Subject: Re: [Qemu-devel] [PATCH v20 06/15] block: Add backing_blocker in BlockDriverState
Date: Thu, 22 May 2014 12:57:36 -0400 [thread overview]
Message-ID: <20140522165736.GC6042@localhost.localdomain> (raw)
In-Reply-To: <20140521143750.GB1891@T430.nay.redhat.com>
On Wed, May 21, 2014 at 10:37:50PM +0800, Fam Zheng wrote:
> On Wed, 05/21 10:24, Jeff Cody wrote:
> > On Wed, May 21, 2014 at 04:03:03PM +0200, Stefan Hajnoczi wrote:
> > > On Tue, May 20, 2014 at 02:04:31PM +0800, Fam Zheng wrote:
> > > > diff --git a/block/mirror.c b/block/mirror.c
> > > > index 1c38aa8..6a53d79 100644
> > > > --- a/block/mirror.c
> > > > +++ b/block/mirror.c
> > > > @@ -499,6 +499,7 @@ immediate_exit:
> > > > * trigger the unref from the top one */
> > > > BlockDriverState *p = s->base->backing_hd;
> > > > s->base->backing_hd = NULL;
> > > > + bdrv_op_unblock_all(p, s->base->backing_blocker);
> > > > bdrv_unref(p);
> > > > }
> > > > }
> > >
> > > Would be cleaner to call bdrv_set_backing_hd(s->base, NULL) here instead
> > > of open coding it.
> > >
> >
> > Patch 10 gets rid of essentially this whole chunk of code, and
> > replaces it with bdrv_drop_intermediate(). So it does get cleaned up,
> > just later in the series.
>
> Thanks for pointing out, Jeff.
>
> Stefan, if there are other reasons to respin, I'll take your suggestion and
> update this, and then split the series, so you can merge 1-6.
>
Unfortunately, it will need a respin. I've been doing some more
testing, and with just patches 1-6, block-commit asserts.
The culprits are the open coded backing_hd assignments, like above, in
bdrv_drop_intermediate() (there are two, and either will cause an
assert):
ret = bdrv_change_backing_file(new_top_bs, backing_file_str,
base_bs->drv ? base_bs->drv->format_name : "");
if (ret) {
goto exit;
}
>> new_top_bs->backing_hd = base_bs;
And:
QSIMPLEQ_FOREACH_SAFE(intermediate_state, &states_to_delete, entry, next) {
/* so that bdrv_close() does not recursively close the chain */
>> intermediate_state->bs->backing_hd = NULL;
bdrv_unref(intermediate_state->bs);
^^^^^^^^^^^
This will assert
Without the call to bdrv_set_backing_hd(), the backing_blocker does
not get cleared, and this asserts in bdrv_delete():
assert(bdrv_op_blocker_is_empty(bs));
So all instances of open coded assignment of backing_hd should be
replaced, either in this patch, or (preferably) in a new patch after
patch 5.
next prev parent reply other threads:[~2014-05-22 16:57 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-20 6:04 [Qemu-devel] [PATCH v20 00/15] Drop in_use from BlockDriverState and enable point-in-time snapshot exporting over NBD Fam Zheng
2014-05-20 6:04 ` [Qemu-devel] [PATCH v20 01/15] block: Add BlockOpType enum Fam Zheng
2014-05-21 12:28 ` Stefan Hajnoczi
2014-05-20 6:04 ` [Qemu-devel] [PATCH v20 02/15] block: Introduce op_blockers to BlockDriverState Fam Zheng
2014-05-21 12:28 ` Stefan Hajnoczi
2014-05-20 6:04 ` [Qemu-devel] [PATCH v20 03/15] block: Replace in_use with operation blocker Fam Zheng
2014-05-21 12:46 ` Stefan Hajnoczi
2014-05-20 6:04 ` [Qemu-devel] [PATCH v20 04/15] block: Move op_blocker check from block_job_create to its caller Fam Zheng
2014-05-20 11:43 ` Jeff Cody
2014-05-21 1:36 ` Fam Zheng
2014-05-21 4:34 ` Jeff Cody
2014-05-21 6:08 ` Fam Zheng
2014-05-21 13:13 ` Stefan Hajnoczi
2014-05-21 13:17 ` Jeff Cody
2014-05-21 14:04 ` Jeff Cody
2014-05-21 13:20 ` Stefan Hajnoczi
2014-05-20 6:04 ` [Qemu-devel] [PATCH v20 05/15] block: Add bdrv_set_backing_hd() Fam Zheng
2014-05-21 13:56 ` Stefan Hajnoczi
2014-05-21 14:17 ` Jeff Cody
2014-05-20 6:04 ` [Qemu-devel] [PATCH v20 06/15] block: Add backing_blocker in BlockDriverState Fam Zheng
2014-05-21 14:03 ` Stefan Hajnoczi
2014-05-21 14:24 ` Jeff Cody
2014-05-21 14:37 ` Fam Zheng
2014-05-22 16:57 ` Jeff Cody [this message]
2014-05-21 14:06 ` Stefan Hajnoczi
2014-05-21 14:49 ` Markus Armbruster
2014-05-20 6:04 ` [Qemu-devel] [PATCH v20 07/15] block: Parse "backing" option to reference existing BDS Fam Zheng
2014-05-20 6:04 ` [Qemu-devel] [PATCH v20 08/15] block: Support dropping active in bdrv_drop_intermediate Fam Zheng
2014-05-20 6:04 ` [Qemu-devel] [PATCH v20 09/15] stream: Use bdrv_drop_intermediate and drop close_unused_images Fam Zheng
2014-05-20 6:04 ` [Qemu-devel] [PATCH v20 10/15] commit: Use bdrv_drop_intermediate Fam Zheng
2014-05-20 6:04 ` [Qemu-devel] [PATCH v20 11/15] qmp: Add command 'blockdev-backup' Fam Zheng
2014-05-20 6:04 ` [Qemu-devel] [PATCH v20 12/15] block: Allow backup on referenced named BlockDriverState Fam Zheng
2014-05-20 6:04 ` [Qemu-devel] [PATCH v20 13/15] block: Add blockdev-backup to transaction Fam Zheng
2014-05-20 6:04 ` [Qemu-devel] [PATCH v20 14/15] qemu-iotests: Test blockdev-backup in 055 Fam Zheng
2014-05-20 6:04 ` [Qemu-devel] [PATCH v20 15/15] qemu-iotests: Image fleecing test case 089 Fam Zheng
2018-06-29 18:00 ` [Qemu-devel] [PATCH v20 00/15] Drop in_use from BlockDriverState and enable point-in-time snapshot exporting over NBD Eric Blake
2018-06-29 18:34 ` John Snow
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=20140522165736.GC6042@localhost.localdomain \
--to=jcody@redhat.com \
--cc=armbru@redhat.com \
--cc=famz@redhat.com \
--cc=hbrock@redhat.com \
--cc=imain@redhat.com \
--cc=kwolf@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rjones@redhat.com \
--cc=stefanha@redhat.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.