From: "Daniel P. Berrange" <berrange@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: qemu-devel@nongnu.org, Kevin Wolf <kwolf@redhat.com>,
qemu-block@nongnu.org, Max Reitz <mreitz@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] block: implement the bdrv_reopen_prepare helper for LUKS driver
Date: Fri, 19 Jan 2018 09:25:16 +0000 [thread overview]
Message-ID: <20180119092516.GB16798@redhat.com> (raw)
In-Reply-To: <11124de8-ece3-cad5-7e43-0b10ce5c097d@redhat.com>
On Thu, Jan 18, 2018 at 01:51:36PM -0600, Eric Blake wrote:
> On 01/18/2018 04:31 AM, Daniel P. Berrange wrote:
> > If the bdrv_reopen_prepare helper isn't provided, the qemu-img commit
> > command fails to re-open the base layer after committing changes into
> > it. Provide a no-op implementation for the LUKS driver, since there
> > is not any custom work that needs doing to re-open it.
> >
> > Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> > ---
> > block/crypto.c | 7 +++++++
> > 1 file changed, 7 insertions(+)
>
> I'm hoping another block-layer expert chimes in, as I'm not quite sure
> what the full reopen rules are; but the idea makes sense to me.
Yeah, likewise - it is hard to understand what is required, but I see
lots of other block drivers just put a no-op impl here. I'm relying on
Kevin/Max to tell me if i'm wrong here
> > diff --git a/block/crypto.c b/block/crypto.c
> > index 60ddf8623e..bb9a8f5376 100644
> > --- a/block/crypto.c
> > +++ b/block/crypto.c
> > @@ -382,6 +382,12 @@ static void block_crypto_close(BlockDriverState *bs)
> > qcrypto_block_free(crypto->block);
> > }
> >
> > +static int block_crypto_reopen_prepare(BDRVReopenState *state,
> > + BlockReopenQueue *queue, Error **errp)
> > +{
> > + /* nothing needs checking */
>
> Are we sure that even changes such as moving from read-only to
> read-write need no checking?
LUKS doesn't do anything differently with ro vs rw images, so I'm assuming
any such checks are handled by the layer below.
>
> > + return 0;
> > +}
> >
> > /*
> > * 1 MB bounce buffer gives good performance / memory tradeoff
> > @@ -620,6 +626,7 @@ BlockDriver bdrv_crypto_luks = {
> > .bdrv_truncate = block_crypto_truncate,
> > .create_opts = &block_crypto_create_opts_luks,
> >
> > + .bdrv_reopen_prepare = block_crypto_reopen_prepare,
> > .bdrv_refresh_limits = block_crypto_refresh_limits,
> > .bdrv_co_preadv = block_crypto_co_preadv,
> > .bdrv_co_pwritev = block_crypto_co_pwritev,
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2018-01-19 9:25 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-18 10:31 [Qemu-devel] [PATCH] block: implement the bdrv_reopen_prepare helper for LUKS driver Daniel P. Berrange
2018-01-18 19:51 ` Eric Blake
2018-01-19 9:25 ` Daniel P. Berrange [this message]
2018-01-31 18:27 ` Max Reitz
2018-02-16 13:53 ` Daniel P. Berrangé
2018-03-06 10:35 ` Daniel P. Berrangé
2018-03-06 11:18 ` Kevin Wolf
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=20180119092516.GB16798@redhat.com \
--to=berrange@redhat.com \
--cc=eblake@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.