All of lore.kernel.org
 help / color / mirror / Atom feed
From: Fam Zheng <famz@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: qemu-devel@nongnu.org, qemu-block@nongnu.org,
	Max Reitz <mreitz@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v13 02/20] block: Drop consistent read perm if opened unsafe
Date: Thu, 20 Apr 2017 19:19:50 +0800	[thread overview]
Message-ID: <20170420111950.GL24486@lemon.lan> (raw)
In-Reply-To: <20170420105829.GE4747@noname.redhat.com>

On Thu, 04/20 12:58, Kevin Wolf wrote:
> Am 20.04.2017 um 09:52 hat Fam Zheng geschrieben:
> > Signed-off-by: Fam Zheng <famz@redhat.com>
> > ---
> >  block.c | 12 +++++++++---
> >  1 file changed, 9 insertions(+), 3 deletions(-)
> > 
> > diff --git a/block.c b/block.c
> > index 1fbbb8d..f5182d8 100644
> > --- a/block.c
> > +++ b/block.c
> > @@ -1722,9 +1722,15 @@ void bdrv_format_default_perms(BlockDriverState *bs, BdrvChild *c,
> >          }
> >  
> >          /* bs->file always needs to be consistent because of the metadata. We
> > -         * can never allow other users to resize or write to it. */
> > -        perm |= BLK_PERM_CONSISTENT_READ;
> > -        shared &= ~(BLK_PERM_WRITE | BLK_PERM_RESIZE);
> > +         * cannot allow other users to resize or write to it unless the caller
> > +         * explicitly expects unsafe readings. */
> > +        if (!(bdrv_get_flags(bs) & BDRV_O_UNSAFE_READ)) {
> 
> We have already spent considerable time to get rid of flags and instead
> convert them into options passed in the QDict, so that they become
> configurable with things like blockdev-add. Adding new flags potentially
> moves in the opposite direction, so we have to be careful there.
> 
> I would be okay with patch 1, because in this case it's basically just a
> shortcut for callers of blk_new_open(), which is fine. As soon as we
> start querying the flag later and even rely on it being inherited, like
> in this patch, I think it becomes a problem.
> 
> So if we need the flag in all nodes, can we make it an option that is
> parsed in bdrv_open_common() into a bool bs->unsafe_read and inherited
> explicitly in bdrv_inherited_options() and bdrv_backing_options()?

OK, I knew new flags are bad, but this is perhaps what I was missing, as an
alternative.

> 
> > +            perm |= BLK_PERM_CONSISTENT_READ;
> > +            shared &= ~(BLK_PERM_WRITE | BLK_PERM_RESIZE);
> > +        } else {
> > +            perm &= ~BLK_PERM_CONSISTENT_READ;
> > +            shared |= BLK_PERM_WRITE | BLK_PERM_RESIZE;
> > +        }
> 
> I'm not completely sure why we would be interested in CONSISTENT_READ
> anyway, isn't allowing shared writes what we really need? (Which you
> already do here in addition to dropping CONSISTENT_READ, without it
> being mentioned in the commit message.)

I think taking external programs into account, CONSISTENT_READ and shared write
are related: if another writer can modify file, our view is not consistent.
That's why I handle them together.

> 
> Also, another thought: Being only at the start of the series, I'm not
> sure what this will be used for, but can we make sure that unsafe_read
> is only set if the image is opened read-only? If this is for the
> libguestfs use case, this restriction should be fine.

I guess you are right. I will give a try to your QDict idea, and only apply it
if read-only.

Fam

  reply	other threads:[~2017-04-20 11:20 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-20  7:52 [Qemu-devel] [PATCH v13 00/20] block: Image locking series Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 01/20] block: Introduce BDRV_O_UNSAFE_READ Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 02/20] block: Drop consistent read perm if opened unsafe Fam Zheng
2017-04-20 10:58   ` Kevin Wolf
2017-04-20 11:19     ` Fam Zheng [this message]
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 03/20] block: Don't require BLK_PERM_CONSISTENT_READ when unsafe open Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 04/20] qemu-img: Add --unsafe-read option to subcommands Fam Zheng
2017-04-20 10:20   ` Kevin Wolf
2017-04-20 10:31     ` Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 05/20] qemu-img: Update documentation for --unsafe-read Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 06/20] qemu-io: Add --unsafe-read option Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 07/20] iotests: 030: Prepare for image locking Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 08/20] iotests: 046: " Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 09/20] iotests: 055: Don't attach the target image already for drive-backup Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 10/20] iotests: 085: Avoid image locking conflict Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 11/20] iotests: 087: Don't attach test image twice Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 12/20] iotests: 091: Quit QEMU before checking image Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 13/20] iotests: 172: Use separate images for multiple devices Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 14/20] tests: Use null-co:// instead of /dev/null as the dummy image Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 15/20] file-posix: Add 'locking' option Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 16/20] tests: Disable image lock in test-replication Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 17/20] block: Workaround drive-backup sync=none for image locking Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 18/20] osdep: Add qemu_lock_fd and qemu_unlock_fd Fam Zheng
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 19/20] file-posix: Add image locking in perm operations Fam Zheng
2017-04-20  9:42   ` Fam Zheng
2017-04-20 11:26   ` Kevin Wolf
2017-04-20  7:52 ` [Qemu-devel] [PATCH v13 20/20] tests: Add test-image-lock Fam Zheng
2017-04-20  8:11 ` [Qemu-devel] [PATCH v13 00/20] block: Image locking series no-reply
2017-04-20  8:32   ` Fam Zheng
2017-04-20 10:03     ` Kevin Wolf
2017-04-20 10:13       ` Fam Zheng
2017-04-20  8:39 ` no-reply
2017-04-20  9:37   ` Fam Zheng
2017-04-20  8:40 ` no-reply
2017-04-20  8:49   ` Fam Zheng

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=20170420111950.GL24486@lemon.lan \
    --to=famz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /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.