From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:46014) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qviaw-00048i-LY for qemu-devel@nongnu.org; Tue, 23 Aug 2011 00:28:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qviav-0007Tc-N8 for qemu-devel@nongnu.org; Tue, 23 Aug 2011 00:28:10 -0400 Received: from mail-yx0-f173.google.com ([209.85.213.173]:42417) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qviav-0007Se-KV for qemu-devel@nongnu.org; Tue, 23 Aug 2011 00:28:09 -0400 Received: by mail-yx0-f173.google.com with SMTP id 3so4715948yxt.4 for ; Mon, 22 Aug 2011 21:28:09 -0700 (PDT) From: Devin Nakamura Date: Tue, 23 Aug 2011 00:27:38 -0400 Message-Id: <1314073663-32691-3-git-send-email-devin122@gmail.com> In-Reply-To: <1314073663-32691-1-git-send-email-devin122@gmail.com> References: <1314073663-32691-1-git-send-email-devin122@gmail.com> Subject: [Qemu-devel] [PATCH V4 2/7] block: make bdrv_open_common more ready to be called by bdrv_open_conversion_target List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, Devin Nakamura Signed-off-by: Devin Nakamura --- 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