From nobody Mon Feb 9 00:06:33 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1517844462910777.6210487934063; Mon, 5 Feb 2018 07:27:42 -0800 (PST) Received: from localhost ([::1]:53630 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eiigI-0006Yh-3q for importer@patchew.org; Mon, 05 Feb 2018 10:27:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43186) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eii5W-0007tZ-K7 for qemu-devel@nongnu.org; Mon, 05 Feb 2018 09:49:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eii5V-000142-KB for qemu-devel@nongnu.org; Mon, 05 Feb 2018 09:49:42 -0500 Received: from fanzine.igalia.com ([91.117.99.155]:49554) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eii5V-00012U-Ah; Mon, 05 Feb 2018 09:49:41 -0500 Received: from [194.100.51.2] (helo=perseus.local) by fanzine.igalia.com with esmtpsa (Cipher TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim) id 1eihqu-0001s1-2D; Mon, 05 Feb 2018 15:34:36 +0100 Received: from berto by perseus.local with local (Exim 4.89) (envelope-from ) id 1eihqJ-0008P9-SM; Mon, 05 Feb 2018 16:33:59 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=References:In-Reply-To:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From; bh=D5aFIk8vUwOIFNJLlzQOZqwOr8qSOMWHVwTtDM1EiHM=; b=cLwKaUeOeBgkoQYEStpHRpF/uyliNXInco7oeEdC9dSHJdhKg7jmkd0cCUq0kHV1FdLK9CsdyQ0GcpVBvXYF2SsBLTDuP+GXT0wNjVN0VetX2iX6ytNNSWXZ3U5pu9tx9eUhnsdxrGAKrk+TE9pCwXSyk/CSJLRT/O+xpBuG6ZOeQOoKSAbVHeXzYX+N9Yb9JvRt+bANmJKBB8poBLzpwyhbolAc5w7lcZiMV14k+OT2IqkQmaFxDlIVL7u5lzZsv/uYPVmnQW1LJkq+/Kq+qMg2wJOXpV4KuHWjkQWHl0KJC+WnOo6P65O0iQRkXticCeFcEDfWC/Gw0QIdC62z/A==; From: Alberto Garcia To: qemu-devel@nongnu.org Date: Mon, 5 Feb 2018 16:33:28 +0200 Message-Id: <947a91d934053a2dbfef979aeb9568f57ef57c5d.1517840877.git.berto@igalia.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: References: In-Reply-To: References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] [fuzzy] X-Received-From: 91.117.99.155 Subject: [Qemu-devel] [PATCH v4 28/39] qcow2: Read refcount before L2 table in expand_zero_clusters_in_l1() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Anton Nefedov , Alberto Garcia , qemu-block@nongnu.org, Max Reitz , "Denis V . Lunev" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" At the moment it doesn't really make a difference whether we call qcow2_get_refcount() before of after reading the L2 table, but if we want to support L2 slices we'll need to read the refcount first. This patch simply changes the order of those two operations to prepare for that. The patch with the actual semantic changes will be easier to read because of this. Signed-off-by: Alberto Garcia Reviewed-by: Eric Blake Reviewed-by: Max Reitz --- block/qcow2-cluster.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c index 068d1ee0a0..ecfd4e7019 100644 --- a/block/qcow2-cluster.c +++ b/block/qcow2-cluster.c @@ -1899,6 +1899,12 @@ static int expand_zero_clusters_in_l1(BlockDriverSta= te *bs, uint64_t *l1_table, goto fail; } =20 + ret =3D qcow2_get_refcount(bs, l2_offset >> s->cluster_bits, + &l2_refcount); + if (ret < 0) { + goto fail; + } + if (is_active_l1) { /* get active L2 tables from cache */ ret =3D qcow2_cache_get(bs, s->l2_table_cache, l2_offset, @@ -1912,12 +1918,6 @@ static int expand_zero_clusters_in_l1(BlockDriverSta= te *bs, uint64_t *l1_table, goto fail; } =20 - ret =3D qcow2_get_refcount(bs, l2_offset >> s->cluster_bits, - &l2_refcount); - if (ret < 0) { - goto fail; - } - for (j =3D 0; j < s->l2_size; j++) { uint64_t l2_entry =3D be64_to_cpu(l2_table[j]); int64_t offset =3D l2_entry & L2E_OFFSET_MASK; --=20 2.11.0