[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH V4 2/7] block: make bdrv_open_common more ready to b
From: |
Devin Nakamura |
Subject: |
[Qemu-devel] [PATCH V4 2/7] block: make bdrv_open_common more ready to be called by bdrv_open_conversion_target |
Date: |
Tue, 23 Aug 2011 00:27:38 -0400 |
Signed-off-by: Devin Nakamura <address@hidden>
---
block.c | 18 ++++++++++++------
1 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/block.c b/block.c
index a8a013a..ac5a103 100644
--- a/block.c
+++ b/block.c
@@ -441,14 +441,17 @@ static int refresh_total_sectors(BlockDriverState *bs,
int64_t hint)
* Common part for opening disk images and files
*/
static int bdrv_open_common(BlockDriverState *bs, const char *filename,
- int flags, BlockDriver *drv)
+ int flags, BlockDriver *drv, BlockConversionOptions *drv_options,
+ QEMUOptionParameter *usr_options, bool force)
{
int ret, open_flags;
assert(drv != NULL);
- bs->file = NULL;
- bs->total_sectors = 0;
+ if (~flags & BDRV_O_CONVERSION) {
+ bs->file = NULL;
+ bs->total_sectors = 0;
+ }
bs->encrypted = 0;
bs->valid_key = 0;
bs->open_flags = flags;
@@ -481,7 +484,10 @@ static int bdrv_open_common(BlockDriverState *bs, const
char *filename,
}
/* Open the image, either directly or using a protocol */
- if (drv->bdrv_file_open) {
+ if (flags & BDRV_O_CONVERSION) {
+ ret = drv->bdrv_open_conversion_target(bs, drv_options, usr_options,
+ force);
+ } else if (drv->bdrv_file_open) {
ret = drv->bdrv_file_open(bs, filename, open_flags);
} else {
ret = bdrv_file_open(&bs->file, filename, open_flags);
@@ -534,7 +540,7 @@ int bdrv_file_open(BlockDriverState **pbs, const char
*filename, int flags)
}
bs = bdrv_new("");
- ret = bdrv_open_common(bs, filename, flags, drv);
+ ret = bdrv_open_common(bs, filename, flags, drv, NULL, NULL, false);
if (ret < 0) {
bdrv_delete(bs);
return ret;
@@ -618,7 +624,7 @@ int bdrv_open(BlockDriverState *bs, const char *filename,
int flags,
}
/* Open the image */
- ret = bdrv_open_common(bs, filename, flags, drv);
+ ret = bdrv_open_common(bs, filename, flags, drv, NULL, NULL, false);
if (ret < 0) {
goto unlink_and_fail;
}
--
1.7.6.rc1
- [Qemu-devel] [PATCH V4 0/7] Block Conversion, Devin Nakamura, 2011/08/23
- [Qemu-devel] [PATCH V4 2/7] block: make bdrv_open_common more ready to be called by bdrv_open_conversion_target,
Devin Nakamura <=
- [Qemu-devel] [PATCH V4 1/7] block: add block conversion api, Devin Nakamura, 2011/08/23
- [Qemu-devel] [PATCH V4 3/7] block: add bdrv_get_conversion_options(), Devin Nakamura, 2011/08/23
- [Qemu-devel] [PATCH V4 4/7] block: add bdrv_open_conversion_target(), Devin Nakamura, 2011/08/23
- [Qemu-devel] [PATCH V4 6/7] block: add bdrv_map(), Devin Nakamura, 2011/08/23
- [Qemu-devel] [PATCH V4 5/7] block: add bdrv_get_mapping(), Devin Nakamura, 2011/08/23
- [Qemu-devel] [PATCH V4 7/7] block: add bdrv_copy_header(), Devin Nakamura, 2011/08/23
- Re: [Qemu-devel] [PATCH V4 0/7] Block Conversion, Devin Nakamura, 2011/08/27
- Re: [Qemu-devel] [PATCH V4 0/7] Block Conversion, Kevin Wolf, 2011/08/29