From nobody Mon Feb 9 15:47:19 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.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 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1571154062; cv=none; d=zoho.com; s=zohoarc; b=a1NPNN/dx2AjzVkkKbAmPYunEnBgWX3YKFN+GS1l+uerlfNBUwBlWq5OFNafkwQI2A0cTSalLht8TZ4QYd0mr0Q7oVhqA1KqdYrPHHjatKXUdly2rhWoGpQ2o+A2UQApxBauzoZjq/5oypCc8fbC2y/OKKyA6NV28pyEWGBWiAE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1571154062; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=eum2qUhwDIOULIJujs+UXiB00bNfmxdH6fSBjv2smuk=; b=MP7aMUIH3fl0KcUtNZikrba9cpULDTyCNsejBF5cmebMK94dHIkXAU2VMg+s4L71IYL54Jsmap6Lm3HfgpJ7lXqAbDcfV+xB2H+XfS+lGfpRYMGQOuviz+Mhk6yiis61lMIBGWwaX0zu/t0SOA87lLvm2/nbaOyrXitDq1B8OU0= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1571154062320738.2448120262372; Tue, 15 Oct 2019 08:41:02 -0700 (PDT) Received: from localhost ([::1]:48978 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iKOwW-00050C-R0 for importer@patchew.org; Tue, 15 Oct 2019 11:41:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48487) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iKOhL-0003Le-7o for qemu-devel@nongnu.org; Tue, 15 Oct 2019 11:25:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iKOhJ-0003rV-PY for qemu-devel@nongnu.org; Tue, 15 Oct 2019 11:25:18 -0400 Received: from fanzine.igalia.com ([178.60.130.6]:47172) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iKOhJ-0003cA-DA; Tue, 15 Oct 2019 11:25:17 -0400 Received: from 82-181-115-92.bb.dnainternet.fi ([82.181.115.92] helo=perseus.local) by fanzine.igalia.com with esmtpsa (Cipher TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim) id 1iKOge-0003ac-3E; Tue, 15 Oct 2019 17:24:36 +0200 Received: from berto by perseus.local with local (Exim 4.92) (envelope-from ) id 1iKOfm-00061g-VW; Tue, 15 Oct 2019 18:23:42 +0300 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From; bh=eum2qUhwDIOULIJujs+UXiB00bNfmxdH6fSBjv2smuk=; b=WV+hVDj6OxCe7cwziL1P46Io6lLbe7+swiSnau3hMfZIj7luCI8NSmcczKW7TT8o/ZCt+mQOWHIIt7cn0Rlv0Rx/dE1hehYlAUyqdR3+g+4+l5YSJN7q1g7crXw4NlwCeqXFT/B6lKd37D46o+nWw9wiboqkSamZsRAJigzWej0mfvwlp3IBje1ncZX3c07eJxSVhktP/skZFZobErQVdQ9cXiwC9WQobqu4jEKqN9LnbBW7DB3JHkiR1tUkfH7AAzjHenhYTYF2d6f9spDykeQTF5hniLz7uxPD3Rg/spW42bfkDYI6e1eKwUoyJkSmj2I5hAR68XBb5zmigf2k0A==; From: Alberto Garcia To: qemu-devel@nongnu.org Subject: [RFC PATCH 15/23] qcow2: Add subcluster support to zero_in_l2_slice() Date: Tue, 15 Oct 2019 18:23:26 +0300 Message-Id: X-Mailer: git-send-email 2.20.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] [fuzzy] X-Received-From: 178.60.130.6 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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) Content-Type: text/plain; charset="utf-8" Setting the QCOW_OFLAG_ZERO bit of the L2 entry is forbidden if an image has subclusters. Instead, the individual 'all zeroes' bits must be used. Signed-off-by: Alberto Garcia --- block/qcow2-cluster.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c index 71d4cc518a..c554b1a88c 100644 --- a/block/qcow2-cluster.c +++ b/block/qcow2-cluster.c @@ -1849,7 +1849,7 @@ static int zero_in_l2_slice(BlockDriverState *bs, uin= t64_t offset, assert(nb_clusters <=3D INT_MAX); =20 for (i =3D 0; i < nb_clusters; i++) { - uint64_t old_offset; + uint64_t old_offset, l2_entry =3D 0; QCow2ClusterType cluster_type; =20 old_offset =3D get_l2_entry(s, l2_slice, l2_index + i); @@ -1866,12 +1866,18 @@ static int zero_in_l2_slice(BlockDriverState *bs, u= int64_t offset, =20 qcow2_cache_entry_mark_dirty(s->l2_table_cache, l2_slice); if (cluster_type =3D=3D QCOW2_CLUSTER_COMPRESSED || unmap) { - set_l2_entry(s, l2_slice, l2_index + i, QCOW_OFLAG_ZERO); qcow2_free_any_clusters(bs, old_offset, 1, QCOW2_DISCARD_REQUE= ST); } else { - uint64_t entry =3D get_l2_entry(s, l2_slice, l2_index + i); - set_l2_entry(s, l2_slice, l2_index + i, entry | QCOW_OFLAG_ZER= O); + l2_entry =3D get_l2_entry(s, l2_slice, l2_index + i); } + + if (has_subclusters(s)) { + set_l2_bitmap(s, l2_slice, l2_index + i, QCOW_L2_BITMAP_ALL_ZE= ROES); + } else { + l2_entry |=3D QCOW_OFLAG_ZERO; + } + + set_l2_entry(s, l2_slice, l2_index + i, l2_entry); } =20 qcow2_cache_put(s->l2_table_cache, (void **) &l2_slice); --=20 2.20.1