From nobody Tue Sep 9 03:13:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1748508654; cv=none; d=zohomail.com; s=zohoarc; b=j32/s1xAlgPnTjUF0OldK07pn355NwSPlvKN7NpCINeEMaWTi67gDZaweUKuLsfErKT/8X/KJYUZA7BebqbblI/57S8W6CCz9KNOrlF9aWlTPXpvwv+BDEr6FQB0Ti6UsJCHby3AhPU2UsuTDvL63pPdEgstu9hARp+pcoF82ys= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1748508654; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=jsoyQdNLamQRi98EM1seAw4GjUuHoYXQHxM+wk6OR6c=; b=Y2EvqutaKoq2demukhTKSaEAcss6wG00kiiW+SyIHty3uvebgqiPVpjtAaUs/zI+WjsN5kSL0S+0i8CNAvcxrw6yh/deNXqp89ZFrTV2D+tcDXUU3j3sRX33zYAN63p26I7ggN1LQU8hmga2M1B+6L6QsB7kQ1iPAkaTxV2Sxq4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1748508654187509.06192369223106; Thu, 29 May 2025 01:50:54 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 37EAE164B; Thu, 29 May 2025 04:50:53 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id E4A84145F; Thu, 29 May 2025 04:44:03 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 023DC12AF; Thu, 29 May 2025 04:43:50 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id ABA3C1298 for ; Thu, 29 May 2025 04:43:28 -0400 (EDT) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-659-KOPhS7Q3O6yAD3jSLR7ZrQ-1; Thu, 29 May 2025 04:43:26 -0400 Received: from mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.40]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 2D60A180045B for ; Thu, 29 May 2025 08:43:26 +0000 (UTC) Received: from speedmetal.redhat.com (unknown [10.44.22.3]) by mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 668CB19560AF for ; Thu, 29 May 2025 08:43:25 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1748508208; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UWyP112frDB6AnJCyO9gIhoJyi7IboNb5Up5jyDKUSw=; b=YwSZqEL27MY6WS8Ge+WLiPLTkzeHwInAqCH2SWZN7f+scidgU9S/DbEE/k3NXhYpoO2xIK Or9ErvnH9XBijx7VRVeWFkCsVDNnoV0PBJa/7utK0igNQL2Mkd+Va7nmndFSfm8BizE3b0 15nR8tHDWkK2GyLLp4WfbSoeuFxDUQo= X-MC-Unique: KOPhS7Q3O6yAD3jSLR7ZrQ-1 X-Mimecast-MFC-AGG-ID: KOPhS7Q3O6yAD3jSLR7ZrQ_1748508206 To: devel@lists.libvirt.org Subject: [PATCH 11/15] storage_file_probe: Move qcow2GetFeatures(ProcessGroup) functions Date: Thu, 29 May 2025 10:43:05 +0200 Message-ID: <782cfcb6853af276d2324b4cf1d65251a47d4f8c.1748507931.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.40 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: mlAAm5-KhCFuolTIfCW3TKUEiEKXhjrOx7GZFctLhGw_1748508206 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: D3G6LOIXBABVJRZ5XROS6QNLOY3P2CSP X-Message-ID-Hash: D3G6LOIXBABVJRZ5XROS6QNLOY3P2CSP X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1748508655929116600 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Move the two functions to where they will be used. Subsequent patches will refactor the control flow so that they will no longer be declared ahead of time. Moving them in a separate patch will make the changes in the refactor more clear to see. Signed-off-by: Peter Krempa --- src/storage_file/storage_file_probe.c | 96 +++++++++++++-------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/src/storage_file/storage_file_probe.c b/src/storage_file/stora= ge_file_probe.c index 21a1013102..b357fdeb66 100644 --- a/src/storage_file/storage_file_probe.c +++ b/src/storage_file/storage_file_probe.c @@ -573,6 +573,54 @@ qcowGetImageSpecific(virStorageSource *meta, } +static void +qcow2GetFeaturesProcessGroup(uint64_t bits, + const virStorageFileFeature *featuremap, + size_t nfeatures, + virBitmap *features) +{ + size_t i; + + for (i =3D 0; i < nfeatures; i++) { + if ((bits & ((uint64_t) 1 << i)) && + featuremap[i] !=3D VIR_STORAGE_FILE_FEATURE_LAST) + ignore_value(virBitmapSetBit(features, featuremap[i])); + } +} + + +static int +qcow2GetFeatures(virBitmap **features, + int format, + char *buf, + ssize_t len) +{ + int version =3D -1; + + version =3D virReadBufInt32BE(buf + fileTypeInfo[format].versionOffset= ); + + if (version =3D=3D 2) + return 0; + + if (len < QCOW2v3_HDR_SIZE) + return -1; + + *features =3D virBitmapNew(VIR_STORAGE_FILE_FEATURE_LAST); + + qcow2GetFeaturesProcessGroup(virReadBufInt64BE(buf + QCOW2v3_HDR_FEATU= RES_COMPATIBLE), + qcow2CompatibleFeatureArray, + G_N_ELEMENTS(qcow2CompatibleFeatureArray), + *features); + + qcow2GetFeaturesProcessGroup(virReadBufInt64BE(buf + QCOW2v3_HDR_FEATU= RES_INCOMPATIBLE), + qcow2IncompatibleFeatureArray, + G_N_ELEMENTS(qcow2IncompatibleFeatureArra= y), + *features); + + return 0; +} + + static int qcow2GetImageSpecific(virStorageSource *meta, const char *buf, @@ -832,54 +880,6 @@ virStorageFileProbeFormatFromBuf(const char *path, } -static void -qcow2GetFeaturesProcessGroup(uint64_t bits, - const virStorageFileFeature *featuremap, - size_t nfeatures, - virBitmap *features) -{ - size_t i; - - for (i =3D 0; i < nfeatures; i++) { - if ((bits & ((uint64_t) 1 << i)) && - featuremap[i] !=3D VIR_STORAGE_FILE_FEATURE_LAST) - ignore_value(virBitmapSetBit(features, featuremap[i])); - } -} - - -static int -qcow2GetFeatures(virBitmap **features, - int format, - char *buf, - ssize_t len) -{ - int version =3D -1; - - version =3D virReadBufInt32BE(buf + fileTypeInfo[format].versionOffset= ); - - if (version =3D=3D 2) - return 0; - - if (len < QCOW2v3_HDR_SIZE) - return -1; - - *features =3D virBitmapNew(VIR_STORAGE_FILE_FEATURE_LAST); - - qcow2GetFeaturesProcessGroup(virReadBufInt64BE(buf + QCOW2v3_HDR_FEATU= RES_COMPATIBLE), - qcow2CompatibleFeatureArray, - G_N_ELEMENTS(qcow2CompatibleFeatureArray), - *features); - - qcow2GetFeaturesProcessGroup(virReadBufInt64BE(buf + QCOW2v3_HDR_FEATU= RES_INCOMPATIBLE), - qcow2IncompatibleFeatureArray, - G_N_ELEMENTS(qcow2IncompatibleFeatureArra= y), - *features); - - return 0; -} - - static bool virStorageFileHasEncryptionFormat(const struct FileEncryptionInfo *info, char *buf, --=20 2.49.0