From nobody Mon Feb 9 18:19:09 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=1593343052; cv=none; d=zohomail.com; s=zohoarc; b=Gbthsaor9EwF5l7AVkDqvzkYS1y08sUIER20vJ+famcmRlH8a2zSSPsxOE8iKevR+ZsMHK+Pal27kVGe/5+9WHcspZ61d9iG/TNOZDrTMf2JBUs/LYAXL1eCwCKU7ag5BSzI4WrIc2Mdfgx7GSXpGuzH9NZqElqKpPf88HplooI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1593343052; 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=5q86OzsOKt/Py3cpreHKFjhS5m2/WJcDnGCV9QFfQgo=; b=Ry/LVhFUxdM0MVKhlBOuEID2+0hMUW5oO+wmjbPjWjFL7u6JSTH6LQoOsZOOTjctK35G8nwZSX31ZM1jXUIWEjb56I8MpGhq/SRtf3gLYA7wbugwiYyjzBEbsf96r+x25HnPg/YDVwzKxhfHALK2NHG2N4duY5ud+eovrQCds1A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1593343052457426.59886666613875; Sun, 28 Jun 2020 04:17:32 -0700 (PDT) Received: from localhost ([::1]:37676 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jpVJT-0004Ws-3h for importer@patchew.org; Sun, 28 Jun 2020 07:17:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48742) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jpV6W-0007f5-5H; Sun, 28 Jun 2020 07:04:08 -0400 Received: from fanzine.igalia.com ([178.60.130.6]:42475) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jpV6M-0000Xq-1d; Sun, 28 Jun 2020 07:04:07 -0400 Received: from 26.red-79-158-236.dynamicip.rima-tde.net ([79.158.236.26] helo=perseus.local) by fanzine.igalia.com with esmtpsa (Cipher TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim) id 1jpV5Y-0002gv-Dm; Sun, 28 Jun 2020 13:03:10 +0200 Received: from berto by perseus.local with local (Exim 4.92) (envelope-from ) id 1jpV5I-0003A6-EV; Sun, 28 Jun 2020 13:02:52 +0200 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=5q86OzsOKt/Py3cpreHKFjhS5m2/WJcDnGCV9QFfQgo=; b=b9wA4h9gBjtQORW4uEodrII6js+NjZbL78LCcbrfZAcuog7Ljg3J161d5HD4ulzYAoGvsi4Xkeqq/z5thQo0Jm3W8RyZH6t1/lCis+41+KqlynTO9pc4sCnDGAJtplIhCoWHkeiMMmb2CmTpRL7xMZBS8oQMAw2+VBW7cHTu0O799BHkP0f5H47qzVauVpcSe34BsLX0Dc1ew6SUhsX/3WMZc9X1j0w05GEh3NBLEKa7hY1sLbAMXHS3fBCMMtzlrMXVhZs6mSf59jGgiAiKGrNxaKCkK9n9J9JOUIQcL3BtpktL2Skds6WRU1PSKt6YtEY3PI4PjSSLIXIir4ioqg==; From: Alberto Garcia To: qemu-devel@nongnu.org Subject: [PATCH v9 32/34] qcow2: Allow preallocation and backing files if extended_l2 is set Date: Sun, 28 Jun 2020 13:02:41 +0200 Message-Id: <7bc65fa80f741d90be50ab25ede29b8e27aad677.1593342067.git.berto@igalia.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=178.60.130.6; envelope-from=berto@igalia.com; helo=fanzine.igalia.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/06/28 07:03:08 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x (no timestamps) [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action 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 , Vladimir Sementsov-Ogievskiy , Alberto Garcia , qemu-block@nongnu.org, Derek Su , Max Reitz 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" Traditional qcow2 images don't allow preallocation if a backing file is set. This is because once a cluster is allocated there is no way to tell that its data should be read from the backing file. Extended L2 entries have individual allocation bits for each subcluster, and therefore it is perfectly possible to have an allocated cluster with all its subclusters unallocated. Signed-off-by: Alberto Garcia Reviewed-by: Eric Blake Reviewed-by: Max Reitz --- block/qcow2.c | 7 ++++--- tests/qemu-iotests/206.out | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/block/qcow2.c b/block/qcow2.c index 37bfae823c..1ea8d3b87e 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -3451,10 +3451,11 @@ qcow2_co_create(BlockdevCreateOptions *create_optio= ns, Error **errp) qcow2_opts->preallocation =3D PREALLOC_MODE_OFF; } if (qcow2_opts->has_backing_file && - qcow2_opts->preallocation !=3D PREALLOC_MODE_OFF) + qcow2_opts->preallocation !=3D PREALLOC_MODE_OFF && + !qcow2_opts->extended_l2) { - error_setg(errp, "Backing file and preallocation cannot be used at= " - "the same time"); + error_setg(errp, "Backing file and preallocation can only be used = at " + "the same time if extended_l2 is on"); ret =3D -EINVAL; goto out; } diff --git a/tests/qemu-iotests/206.out b/tests/qemu-iotests/206.out index 363c5abe35..a100849fcb 100644 --- a/tests/qemu-iotests/206.out +++ b/tests/qemu-iotests/206.out @@ -203,7 +203,7 @@ Job failed: Different refcount widths than 16 bits requ= ire compatibility level 1 =3D=3D=3D Invalid backing file options =3D=3D=3D {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": = {"backing-file": "/dev/null", "driver": "qcow2", "file": "node0", "prealloc= ation": "full", "size": 67108864}}} {"return": {}} -Job failed: Backing file and preallocation cannot be used at the same time +Job failed: Backing file and preallocation can only be used at the same ti= me if extended_l2 is on {"execute": "job-dismiss", "arguments": {"id": "job0"}} {"return": {}} =20 --=20 2.20.1