[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 0/8] block: Integrate bdrv_file_open() into bdrv_
From: |
Max Reitz |
Subject: |
[Qemu-devel] [PATCH v4 0/8] block: Integrate bdrv_file_open() into bdrv_open() |
Date: |
Tue, 18 Feb 2014 18:33:04 +0100 |
bdrv_file_open() is now nearly a subset of bdrv_open(), except for the
fact that bdrv_file_open() is for protocols and bdrv_open() for block
drivers. It is possible to use bdrv_file_open() with a block driver, but
in that case that block driver must be explicitly specified.
Due to these great similarities, bdrv_file_open() can be integrated and
made a special case of bdrv_open(). If the flag BDRV_O_PROTOCOL is
specified, bdrv_open() will now do what bdrv_file_open() used to do:
Auto-detecting a protocol instead of a block driver.
This series implements this and changes all calls to bdrv_file_open() to
bdrv_open() calls with BDRV_O_PROTOCOL specified.
Note that this flag cannot be discerned automatically since it is
impossible for bdrv_open() to know by itself whether a given file should
be opened with or without the format layer involved: Both are valid
alternatives. Therefore, it still has to be specified by the user.
v4 (rebased on Kevin's block branch):
- patch 2: use Benoît's bdrv_lookup_bs() instead of bdrv_find()
- patch 4: resolved rebase conflict (the v3 hunk removed a bdrv_find(),
whereas now it is a bdrv_lookup_bs())
v3:
- patch 1:
- Kevin: add assert(pbs) and assert(*pbs == NULL) in
bdrv_open_image()
- Benoît: remove spurious new line removal
- patch 2:
- Benoît: document reference parameter of bdrv_open()
- patch 3:
- add the same assertions before every bdrv_file_open() translated to
bdrv_open() and try not to initialize BDS pointers to NULL but
rather set them right in front of bdrv_open() as in v2 for patch 1
- remove addition of *pbs = NULL in bdrv_open_image() in front of the
bdrv_file_open() being translated to bdrv_open()
- patch 7:
- Kevin: remove wrongly added
"else if (drv->bdrv_needs_filename && !filename)" block
- patch 8:
- since patch 3 now does not add the *pbs = NULL anymore, this patch
does not need to remove it either (I added the Reviewed-bys anyway,
since this is just about temporary code introduced by this series)
v2:
- patch 1:
- added appropriate assertions before every bdrv_open() and
bdrv_open_image() call where the BDS should be NULL (i.e., where a
new BDS should be created) and it is not obvious
- don't initialize BDS pointers to NULL if that is necessary for a
bdrv_open(); rather, set them to NULL directly before calling
bdrv_open() in order to make the expected behavior of bdrv_open()
(create a new BDS) more obvious
- make bdrv_open_image() behave the same way as bdrv_open() in regard
to BDS creation/reuse (completed in patch 8)
- keep "options == NULL" check in bdrv_open() together with the block
for setting "bs->options"
- patch 2:
- due to options now possibly being NULL in the reference handling
block of bdrv_open(), the condition for "options_non_empty" has to
be adjusted
- contextual changes due to patch 1
- patch 3:
- adjust comment for BDRV_O_PROTOCOL
- contextual changes due to the previous patches
- patch 4 (previously 5):
- contextual changes due to the previous patches
- patch 5 (previously 6):
- bdrv_close() is unnecessary if the BDS could not be opened
- patch 6:
- melded together from previous patches 4, 7 and 8
- patch 7 (previously 9):
- make the "options" parameter of bdrv_file_open() an indirect
pointer; if bdrv_file_open() takes the reference, it will be set to
NULL; otherwise, the caller is responsible for freeing the QDict
- patch 8 (previously 10):
- make bdrv_open_image() behave the same way as bdrv_open() in regard
to BDS creation/reuse
- contextual changes due to the previous patches
Max Reitz (8):
block: Change BDS parameter of bdrv_open() to **
block: Add reference parameter to bdrv_open()
block: Make bdrv_file_open() static
block: Reuse reference handling from bdrv_open()
block: Remove bdrv_new() from bdrv_file_open()
block: Handle bs->options in bdrv_open() only
block: Reuse success path from bdrv_open()
block: Remove bdrv_open_image()'s force_raw option
block.c | 226 +++++++++++++++++++++++++-------------------------
block/blkdebug.c | 3 +-
block/blkverify.c | 6 +-
block/cow.c | 5 +-
block/qcow.c | 5 +-
block/qcow2.c | 18 ++--
block/qed.c | 8 +-
block/sheepdog.c | 7 +-
block/vhdx.c | 4 +-
block/vmdk.c | 19 +++--
block/vvfat.c | 6 +-
blockdev.c | 22 +++--
hw/block/xen_disk.c | 4 +-
include/block/block.h | 13 +--
qemu-img.c | 12 ++-
qemu-io.c | 8 +-
qemu-nbd.c | 2 +-
17 files changed, 197 insertions(+), 171 deletions(-)
--
1.8.5.4
- [Qemu-devel] [PATCH v4 0/8] block: Integrate bdrv_file_open() into bdrv_open(),
Max Reitz <=
- [Qemu-devel] [PATCH v4 1/8] block: Change BDS parameter of bdrv_open() to **, Max Reitz, 2014/02/18
- [Qemu-devel] [PATCH v4 2/8] block: Add reference parameter to bdrv_open(), Max Reitz, 2014/02/18
- [Qemu-devel] [PATCH v4 3/8] block: Make bdrv_file_open() static, Max Reitz, 2014/02/18
- [Qemu-devel] [PATCH v4 4/8] block: Reuse reference handling from bdrv_open(), Max Reitz, 2014/02/18
- [Qemu-devel] [PATCH v4 5/8] block: Remove bdrv_new() from bdrv_file_open(), Max Reitz, 2014/02/18
- [Qemu-devel] [PATCH v4 8/8] block: Remove bdrv_open_image()'s force_raw option, Max Reitz, 2014/02/18
- [Qemu-devel] [PATCH v4 6/8] block: Handle bs->options in bdrv_open() only, Max Reitz, 2014/02/18
- [Qemu-devel] [PATCH v4 7/8] block: Reuse success path from bdrv_open(), Max Reitz, 2014/02/18
- Re: [Qemu-devel] [PATCH v4 0/8] block: Integrate bdrv_file_open() into bdrv_open(), Kevin Wolf, 2014/02/19