From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:36595) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RGXd0-0002pf-Dh for qemu-devel@nongnu.org; Wed, 19 Oct 2011 11:00:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RGXcx-0006HM-VM for qemu-devel@nongnu.org; Wed, 19 Oct 2011 11:00:22 -0400 Received: from mail-qw0-f45.google.com ([209.85.216.45]:41524) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RGXcx-0006H9-Aa for qemu-devel@nongnu.org; Wed, 19 Oct 2011 11:00:19 -0400 Received: by qadc12 with SMTP id c12so707796qad.4 for ; Wed, 19 Oct 2011 08:00:18 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Wed, 19 Oct 2011 16:59:53 +0200 Message-Id: <1319036398-14320-4-git-send-email-pbonzini@redhat.com> In-Reply-To: <1319036398-14320-1-git-send-email-pbonzini@redhat.com> References: <1319036398-14320-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH 3/8] vmdk: clean up open List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, stefanha@linux.vnet.ibm.com Signed-off-by: Paolo Bonzini --- block/vmdk.c | 37 +++++++++++++++---------------------- 1 files changed, 15 insertions(+), 22 deletions(-) diff --git a/block/vmdk.c b/block/vmdk.c index 21566eb..12b38d2 100644 --- a/block/vmdk.c +++ b/block/vmdk.c @@ -622,20 +622,7 @@ static int vmdk_open_desc_file(BlockDriverState *bs, int flags, return -ENOTSUP; } s->desc_offset = 0; - ret = vmdk_parse_extents(buf, bs, bs->file->filename); - if (ret) { - vmdk_free_extents(bs); - return ret; - } - - /* try to open parent images, if exist */ - ret = vmdk_parent_open(bs); - if (ret) { - vmdk_free_extents(bs); - return ret; - } - s->parent_cid = vmdk_read_cid(bs, 1); - return 0; + return vmdk_parse_extents(buf, bs, bs->file->filename); } static int vmdk_open(BlockDriverState *bs, int flags) @@ -645,17 +632,23 @@ static int vmdk_open(BlockDriverState *bs, int flags) if (vmdk_open_sparse(bs, bs->file, flags) == 0) { s->desc_offset = 0x200; - /* try to open parent images, if exist */ - ret = vmdk_parent_open(bs); + } else { + ret = vmdk_open_desc_file(bs, flags, 0); if (ret) { - vmdk_free_extents(bs); - return ret; + goto fail; } - s->parent_cid = vmdk_read_cid(bs, 1); - return 0; - } else { - return vmdk_open_desc_file(bs, flags, 0); } + /* try to open parent images, if exist */ + ret = vmdk_parent_open(bs); + if (ret) { + goto fail; + } + s->parent_cid = vmdk_read_cid(bs, 1); + return ret; + +fail: + vmdk_free_extents(bs); + return ret; } static int get_whole_cluster(BlockDriverState *bs, -- 1.7.6