[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 17/21] block: allow to call bdrv_open() with an opaq
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH 17/21] block: allow to call bdrv_open() with an opaque |
Date: |
Mon, 18 Nov 2013 13:25:27 +0100 |
From: Marc-André Lureau <address@hidden>
If the block driver already has a bs->opaque when calling bdrv_open(),
pass it down to the file driver.
Signed-off-by: Marc-André Lureau <address@hidden>
Conflicts:
block.c
---
block.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/block.c b/block.c
index f154979..ce2427b 100644
--- a/block.c
+++ b/block.c
@@ -1131,6 +1131,7 @@ int bdrv_open(BlockDriverState *bs, const char *filename,
QDict *options,
QDict *file_options = NULL;
const char *drvname;
Error *local_err = NULL;
+ void *backing_opaque = NULL;
/* NULL means an empty set of options */
if (options == NULL) {
@@ -1154,6 +1155,8 @@ int bdrv_open(BlockDriverState *bs, const char *filename,
QDict *options,
goto fail;
}
+ backing_opaque = bs->opaque;
+ bs->opaque = NULL;
if (total_size == -1) {
bs1 = bdrv_new_int("", NULL, NULL);
ret = bdrv_open(bs1, filename, NULL, 0, drv, &local_err);
@@ -1181,7 +1184,8 @@ int bdrv_open(BlockDriverState *bs, const char *filename,
QDict *options,
ret = bdrv_file_open_int(&file, filename, file_options,
bdrv_open_flags(bs, flags | BDRV_O_UNMAP),
- bs, NULL, &local_err);
+ bs, bs->opaque, &local_err);
+ bs->opaque = NULL;
if (ret < 0) {
goto fail;
}
@@ -1217,7 +1221,8 @@ int bdrv_open(BlockDriverState *bs, const char *filename,
QDict *options,
QDict *backing_options;
qdict_extract_subqdict(options, &backing_options, "backing.");
- ret = bdrv_open_backing_file_int(bs, backing_options, NULL,
&local_err);
+ ret = bdrv_open_backing_file_int(bs, backing_options,
+ backing_opaque, &local_err);
if (ret < 0) {
goto close_and_fail;
}
--
1.8.3.1
- [Qemu-devel] [PATCH 07/21] nbd: don't change socket block during negotiate, (continued)
- [Qemu-devel] [PATCH 07/21] nbd: don't change socket block during negotiate, Marc-André Lureau, 2013/11/18
- [Qemu-devel] [PATCH 08/21] nbd: pass export name as init argument, Marc-André Lureau, 2013/11/18
- [Qemu-devel] [PATCH 09/21] nbd: make session_close() idempotent, Marc-André Lureau, 2013/11/18
- [Qemu-devel] [PATCH 10/21] nbd: finish any pending coroutine, Marc-André Lureau, 2013/11/18
- [Qemu-devel] [PATCH 11/21] nbd: avoid uninitialized warnings, Marc-André Lureau, 2013/11/18
- [Qemu-devel] [PATCH 12/21] block: save the associated child name in BlockDriverState, Marc-André Lureau, 2013/11/18
- [Qemu-devel] [PATCH 13/21] blockdev: add qmp_change_blockdev_int(), Marc-André Lureau, 2013/11/18
- [Qemu-devel] [PATCH 14/21] block: extract make_snapshot() from bdrv_open(), Marc-André Lureau, 2013/11/18
- [Qemu-devel] [PATCH 15/21] block: add "snapshot.size" option to avoid extra bdrv_open(), Marc-André Lureau, 2013/11/18
- [Qemu-devel] [PATCH 16/21] block: learn to open a driver with a given opaque, Marc-André Lureau, 2013/11/18
- [Qemu-devel] [PATCH 17/21] block: allow to call bdrv_open() with an opaque,
Marc-André Lureau <=
- [Qemu-devel] [PATCH 18/21] block: do not notify change during migration, Marc-André Lureau, 2013/11/18
- [Qemu-devel] [PATCH 19/21] sysemu: add vm_start_hold/release, Marc-André Lureau, 2013/11/18
- [Qemu-devel] [PATCH 20/21] spice-core: allow an interface to be in AIO context, Marc-André Lureau, 2013/11/18
- [Qemu-devel] [PATCH 21/21] block: add spice block device backend, Marc-André Lureau, 2013/11/18
- Re: [Qemu-devel] [PATCH 00/21] RFCv2: add Spice block device, Marc-André Lureau, 2013/11/22