[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 10/11] block: add option 'backing' to -drive opti
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [PATCH v2 10/11] block: add option 'backing' to -drive options |
Date: |
Wed, 17 Jul 2013 17:42:15 +0800 |
This option allows overriding backing hd of drive. If the target drive
exists, it's referenced as the backing file and refcount incremented.
Example:
qemu-system-x86_64 -drive \
file.filename=foo.qcow2,if=none,id=foo \
-drive file=bar.qcow2,backing=foo
Signed-off-by: Fam Zheng <address@hidden>
---
block.c | 30 ++++++++++++++++++++++++------
1 file changed, 24 insertions(+), 6 deletions(-)
diff --git a/block.c b/block.c
index 147a448..31fab07 100644
--- a/block.c
+++ b/block.c
@@ -1083,12 +1083,30 @@ int bdrv_open(BlockDriverState *bs, const char
*filename, QDict *options,
/* If there is a backing file, use it */
if ((flags & BDRV_O_NO_BACKING) == 0) {
- QDict *backing_options;
-
- extract_subqdict(options, &backing_options, "backing.");
- ret = bdrv_open_backing_file(bs, backing_options);
- if (ret < 0) {
- goto close_and_fail;
+ const char *backing_drive;
+ backing_drive = qdict_get_try_str(options, "backing");
+ if (backing_drive) {
+ bs->backing_hd = bdrv_find(backing_drive);
+ if (bs->backing_hd) {
+ bdrv_ref(bs->backing_hd, false);
+ pstrcpy(bs->backing_file, sizeof(bs->backing_file),
+ bs->backing_hd->filename);
+ pstrcpy(bs->backing_format, sizeof(bs->backing_format),
+ bs->backing_hd->drv->format_name);
+ } else {
+ qerror_report(ERROR_CLASS_DEVICE_NOT_FOUND,
+ "Can't find drive with name %s\n", backing_drive);
+ ret = -EINVAL;
+ goto close_and_fail;
+ }
+ qdict_del(options, "backing");
+ } else {
+ QDict *backing_options;
+ extract_subqdict(options, &backing_options, "backing.");
+ ret = bdrv_open_backing_file(bs, backing_options);
+ if (ret < 0) {
+ goto close_and_fail;
+ }
}
}
--
1.8.3.2
- [Qemu-devel] [PATCH v2 04/11] block: use refcnt for device attach/detach, (continued)
- [Qemu-devel] [PATCH v2 04/11] block: use refcnt for device attach/detach, Fam Zheng, 2013/07/17
- [Qemu-devel] [PATCH v2 05/11] migration: omit drive ref as we have bdrv_ref now, Fam Zheng, 2013/07/17
- [Qemu-devel] [PATCH v2 06/11] xen_disk: simplify blk_disconnect with refcnt, Fam Zheng, 2013/07/17
- [Qemu-devel] [PATCH v2 07/11] block: hold hard reference for backup/mirror target, Fam Zheng, 2013/07/17
- [Qemu-devel] [PATCH v2 08/11] block: simplify bdrv_drop_intermediate, Fam Zheng, 2013/07/17
- [Qemu-devel] [PATCH v2 09/11] block: add assertion to check refcount before deleting, Fam Zheng, 2013/07/17
- [Qemu-devel] [PATCH v2 10/11] block: add option 'backing' to -drive options,
Fam Zheng <=
- Re: [Qemu-devel] [PATCH v2 10/11] block: add option 'backing' to -drive options, Paolo Bonzini, 2013/07/17
- Re: [Qemu-devel] [PATCH v2 10/11] block: add option 'backing' to -drive options, Kevin Wolf, 2013/07/17
- Re: [Qemu-devel] [PATCH v2 10/11] block: add option 'backing' to -drive options, Paolo Bonzini, 2013/07/17
- Re: [Qemu-devel] [PATCH v2 10/11] block: add option 'backing' to -drive options, Kevin Wolf, 2013/07/17
- Re: [Qemu-devel] [PATCH v2 10/11] block: add option 'backing' to -drive options, Paolo Bonzini, 2013/07/17
- Re: [Qemu-devel] [PATCH v2 10/11] block: add option 'backing' to -drive options, Kevin Wolf, 2013/07/17
- Re: [Qemu-devel] [PATCH v2 10/11] block: add option 'backing' to -drive options, Paolo Bonzini, 2013/07/17
- Re: [Qemu-devel] [PATCH v2 10/11] block: add option 'backing' to -drive options, Ian Main, 2013/07/23
- Re: [Qemu-devel] [PATCH v2 10/11] block: add option 'backing' to -drive options, Fam Zheng, 2013/07/22
- Re: [Qemu-devel] [PATCH v2 10/11] block: add option 'backing' to -drive options, Ian Main, 2013/07/23