From patchwork Thu Nov 28 11:02:27 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kevin Wolf X-Patchwork-Id: 294851 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 5892A2C0089 for ; Thu, 28 Nov 2013 22:03:08 +1100 (EST) Received: from localhost ([::1]:41162 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VlzNA-0008Lw-9p for incoming@patchwork.ozlabs.org; Thu, 28 Nov 2013 06:03:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47637) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VlzMn-0008DL-Rj for qemu-devel@nongnu.org; Thu, 28 Nov 2013 06:02:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VlzMf-0007qX-MZ for qemu-devel@nongnu.org; Thu, 28 Nov 2013 06:02:41 -0500 Received: from mx1.redhat.com ([209.132.183.28]:29528) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VlzMf-0007q8-Ev for qemu-devel@nongnu.org; Thu, 28 Nov 2013 06:02:33 -0500 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id rASB2W5q020994 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 28 Nov 2013 06:02:32 -0500 Received: from dhcp-200-207.str.redhat.com (ovpn-116-83.ams2.redhat.com [10.36.116.83]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id rASB2T0v030821; Thu, 28 Nov 2013 06:02:30 -0500 From: Kevin Wolf To: qemu-devel@nongnu.org Date: Thu, 28 Nov 2013 12:02:27 +0100 Message-Id: <1385636547-26826-1-git-send-email-kwolf@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 209.132.183.28 Cc: kwolf@redhat.com, stefanha@redhat.com, mreitz@redhat.com Subject: [Qemu-devel] [PATCH] block: Use BDRV_O_NO_BACKING where appropriate X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org If you open an image temporarily just because you want to check its size or get it flushed, there's no real reason to open the whole backing file chain. Signed-off-by: Kevin Wolf Reviewed-by: Fam Zheng Reviewed-by: Benoit Canet Reviewed-by: Wenchao Xia --- block.c | 3 ++- block/qcow2.c | 3 ++- block/vmdk.c | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/block.c b/block.c index 03e45fc..e2745a5 100644 --- a/block.c +++ b/block.c @@ -1061,7 +1061,8 @@ int bdrv_open(BlockDriverState *bs, const char *filename, QDict *options, /* Get the required size from the image */ bs1 = bdrv_new(""); QINCREF(options); - ret = bdrv_open(bs1, filename, options, 0, drv, &local_err); + ret = bdrv_open(bs1, filename, options, BDRV_O_NO_BACKING, + drv, &local_err); if (ret < 0) { bdrv_unref(bs1); goto fail; diff --git a/block/qcow2.c b/block/qcow2.c index 2fe37ed..8e2b6c7 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -1588,7 +1588,8 @@ static int qcow2_create2(const char *filename, int64_t total_size, /* Reopen the image without BDRV_O_NO_FLUSH to flush it before returning */ ret = bdrv_open(bs, filename, NULL, - BDRV_O_RDWR | BDRV_O_CACHE_WB, drv, &local_err); + BDRV_O_RDWR | BDRV_O_CACHE_WB | BDRV_O_NO_BACKING, + drv, &local_err); if (error_is_set(&local_err)) { error_propagate(errp, local_err); goto out; diff --git a/block/vmdk.c b/block/vmdk.c index 6555663..5fb6c81 100644 --- a/block/vmdk.c +++ b/block/vmdk.c @@ -1690,7 +1690,7 @@ static int vmdk_create(const char *filename, QEMUOptionParameter *options, } if (backing_file) { BlockDriverState *bs = bdrv_new(""); - ret = bdrv_open(bs, backing_file, NULL, 0, NULL, errp); + ret = bdrv_open(bs, backing_file, NULL, BDRV_O_NO_BACKING, NULL, errp); if (ret != 0) { bdrv_unref(bs); return ret;