From: Kevin Wolf <kwolf@redhat.com>
To: Max Reitz <mreitz@redhat.com>
Cc: qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 03/10] block: Make bdrv_file_open() static
Date: Mon, 3 Feb 2014 11:05:21 +0100 [thread overview]
Message-ID: <20140203100521.GF3643@dhcp-200-207.str.redhat.com> (raw)
In-Reply-To: <52EC059B.10209@redhat.com>
Am 31.01.2014 um 21:20 hat Max Reitz geschrieben:
> On 29.01.2014 14:26, Kevin Wolf wrote:
> >Am 26.01.2014 um 20:02 hat Max Reitz geschrieben:
> >>Add the bdrv_open() option BDRV_O_PROTOCOL which results in passing the
> >>call to bdrv_file_open(). Additionally, make bdrv_file_open() static and
> >>therefore bdrv_open() the only way to call it.
> >>
> >>Consequently, all existing calls to bdrv_file_open() have to be adjusted
> >>to use bdrv_open() with the BDRV_O_PROTOCOL flag instead.
> >>
> >>Signed-off-by: Max Reitz <mreitz@redhat.com>
> >>---
> >> block.c | 17 ++++++++++++-----
> >> block/cow.c | 6 +++---
> >> block/qcow.c | 6 +++---
> >> block/qcow2.c | 5 +++--
> >> block/qed.c | 5 +++--
> >> block/sheepdog.c | 8 +++++---
> >> block/vhdx.c | 5 +++--
> >> block/vmdk.c | 11 +++++++----
> >> include/block/block.h | 5 ++---
> >> qemu-io.c | 4 +++-
> >> 10 files changed, 44 insertions(+), 28 deletions(-)
> >>diff --git a/include/block/block.h b/include/block/block.h
> >>index a421041..396f9ed 100644
> >>--- a/include/block/block.h
> >>+++ b/include/block/block.h
> >>@@ -102,6 +102,8 @@ typedef enum {
> >> #define BDRV_O_CHECK 0x1000 /* open solely for consistency check */
> >> #define BDRV_O_ALLOW_RDWR 0x2000 /* allow reopen to change from r/o to r/w */
> >> #define BDRV_O_UNMAP 0x4000 /* execute guest UNMAP/TRIM operations */
> >>+#define BDRV_O_PROTOCOL 0x8000 /* open the file using a protocol instead of
> >>+ a block driver */
> >Protocol drivers are a subset of block drivers, so this description
> >doesn't make sense.
>
> Hm, technically they probably are but it always seemed to me that
> bdrv_open() would never directly use a protocol, instead using raw
> as the format if no format was found.
Except if you explicitly specify something like format=file.
> More importantly, it is actually possible to use a non-protocol
> block driver with BDRV_O_PROTOCOL; it just needs to be explicitly
> specified.
Yes, I think with explicit specification of the driver you get mostly
the same results with bdrv_open() and bdrv_file_open().
> >I guess we need to list the differences between bdrv_open() and
> >bdrv_file_open() in order to define what this flag really changes. I
> >think this includes:
> >
> >- Disables format probing
> >- BDRV_O_SNAPSHOT is ignored
> >- No backing files are opened
> >- Probably a few more
>
> So, to me, the main difference is that bdrv_open() always uses some
> non-protocol block driver, whereas bdrv_file_open() only probes for
> protocol block drivers (if a non-protocol driver should be used, it
> has to be explicitly specified).
>
> The current comment for bdrv_file_open() doesn't help much, either:
> “Opens a file using a protocol”. Therefore, the easiest way would
> just be to state “behaves like the old bdrv_file_open()”, but that
> would not be very helpful. Perhaps we could formulate it like “Opens
> a single file (no backing chain, etc.) using only a protocol driver
> deduced from the filename, if not explicitly specified otherwise.”
Perhaps we should really specify it as the difference in probing:
- bdrv_open() adds a probed format layer on top of bs
- bdrv_file_open() probes protocols for bs
All other differences can probably go away without breaking anything:
BDRV_O_SNAPSHOT can be hopefully be moved to drive_init() (the tricky one
here is qmp_change_blockdev), and supporting backing files in
bdrv_file_open() by moving their handling to common code shouldn't hurt.
Any other differences that need to be eliminated? Once we know
what the differences should be, I guess we can greatly simplify the
implementation.
Kevin
next prev parent reply other threads:[~2014-02-03 10:05 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-26 19:02 [Qemu-devel] [PATCH 00/10] block: Integrate bdrv_file_open() into bdrv_open() Max Reitz
2014-01-26 19:02 ` [Qemu-devel] [PATCH 01/10] block: Change BDS parameter of bdrv_open() to ** Max Reitz
2014-01-27 2:38 ` Benoît Canet
2014-01-27 18:51 ` Max Reitz
2014-01-27 19:31 ` Jeff Cody
2014-01-27 19:35 ` Max Reitz
2014-01-29 11:50 ` Kevin Wolf
2014-01-31 20:07 ` Max Reitz
2014-02-03 9:49 ` Kevin Wolf
2014-01-26 19:02 ` [Qemu-devel] [PATCH 02/10] block: Add reference parameter to bdrv_open() Max Reitz
2014-01-26 19:02 ` [Qemu-devel] [PATCH 03/10] block: Make bdrv_file_open() static Max Reitz
2014-01-27 2:51 ` Benoît Canet
2014-01-29 13:26 ` Kevin Wolf
2014-01-31 20:20 ` Max Reitz
2014-02-03 10:05 ` Kevin Wolf [this message]
2014-01-26 19:02 ` [Qemu-devel] [PATCH 04/10] block: Reuse NULL options check from bdrv_open() Max Reitz
2014-01-27 2:52 ` Benoît Canet
2014-01-26 19:02 ` [Qemu-devel] [PATCH 05/10] block: Reuse reference handling " Max Reitz
2014-01-27 2:56 ` Benoît Canet
2014-01-26 19:02 ` [Qemu-devel] [PATCH 06/10] block: Remove bdrv_new() from bdrv_file_open() Max Reitz
2014-01-27 3:04 ` Benoît Canet
2014-01-29 13:35 ` Kevin Wolf
2014-01-31 20:21 ` Max Reitz
2014-01-26 19:02 ` [Qemu-devel] [PATCH 07/10] block: Reuse fail path from bdrv_open() Max Reitz
2014-01-27 3:10 ` Benoît Canet
2014-01-27 18:58 ` Max Reitz
2014-01-29 13:40 ` Kevin Wolf
2014-01-26 19:02 ` [Qemu-devel] [PATCH 08/10] block: Reuse bs->options setting " Max Reitz
2014-01-27 3:13 ` Benoît Canet
2014-01-29 13:45 ` Kevin Wolf
2014-01-31 20:25 ` Max Reitz
2014-01-26 19:02 ` [Qemu-devel] [PATCH 09/10] block: Reuse success path " Max Reitz
2014-01-27 17:44 ` Jeff Cody
2014-01-27 19:06 ` Max Reitz
2014-01-26 19:02 ` [Qemu-devel] [PATCH 10/10] block: Remove bdrv_open_image()'s force_raw option Max Reitz
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=20140203100521.GF3643@dhcp-200-207.str.redhat.com \
--to=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-devel@nongnu.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).