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,
stefanha@redhat.com, pbonzini@redhat.com
Subject: Re: [Qemu-devel] [PATCH v20 04/15] block: Move op_blocker check from block_job_create to its caller
Date: Tue, 20 May 2014 07:43:34 -0400 [thread overview]
Message-ID: <20140520114334.GA5292@localhost.localdomain> (raw)
In-Reply-To: <1400565880-13409-5-git-send-email-famz@redhat.com>
On Tue, May 20, 2014 at 02:04:29PM +0800, Fam Zheng wrote:
> It makes no sense to check for "any" blocker on bs, we are here only
> because of the mechanical conversion from in_use to op_blockers. Remove
> it now, and let the callers check specific operation types. Backup and
> mirror already have it, add checker to stream and commit.
>
> Signed-off-by: Fam Zheng <famz@redhat.com>
> Reviewed-by: Benoit Canet <benoit@irqsave.net>
> Reviewed-by: Jeff Cody <jcody@redhat.com>
> ---
> blockdev.c | 8 ++++++++
> blockjob.c | 2 +-
> 2 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/blockdev.c b/blockdev.c
> index 5d950fa..21fc55b 100644
> --- a/blockdev.c
> +++ b/blockdev.c
> @@ -1850,6 +1850,10 @@ void qmp_block_stream(const char *device, bool has_base,
> return;
> }
>
> + if (bdrv_op_is_blocked(bs, BLOCK_OP_TYPE_STREAM, errp)) {
> + return;
> + }
> +
> if (base) {
> base_bs = bdrv_find_backing_image(bs, base);
> if (base_bs == NULL) {
> @@ -1894,6 +1898,10 @@ void qmp_block_commit(const char *device,
> return;
> }
>
> + if (bdrv_op_is_blocked(bs, BLOCK_OP_TYPE_COMMIT, errp)) {
> + return;
> + }
> +
Is the blocker intended to operate at the device level, i.e. to mark a
whole chain as 'blocked' for one or more operations? Or, is it
intended to block at the singular BDS level (the commit message in
patch 2 implies this meaning)?
More to the point: if a BDS is marked as blocked, does that also imply
all of the images in its backing chain are also considered blocked?
Conversely, if a BDS is *not* marked as blocked, does that mean all of
its backing chain is also unblocked?
If the answer to the two questions above is 'yes', then the
bdrv_op_block/unblock functions should probably operate recursively
down the chain to the bottom-most backing file.
If the answer is 'no', then for some operations like stream and commit
(and probably others), don't we also need to worry about the blocker
state of a lot more images in the chain?
> /* default top_bs is the active layer */
> top_bs = bs;
>
> diff --git a/blockjob.c b/blockjob.c
> index 60e72f5..7d84ca1 100644
> --- a/blockjob.c
> +++ b/blockjob.c
> @@ -41,7 +41,7 @@ void *block_job_create(const BlockJobDriver *driver, BlockDriverState *bs,
> {
> BlockJob *job;
>
> - if (bs->job || !bdrv_op_blocker_is_empty(bs)) {
> + if (bs->job) {
> error_set(errp, QERR_DEVICE_IN_USE, bdrv_get_device_name(bs));
> return NULL;
> }
> --
> 1.9.2
>
next prev parent reply other threads:[~2014-05-20 11:43 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 [this message]
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
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=20140520114334.GA5292@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.