From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371498; cv=none; d=zohomail.com; s=zohoarc; b=DldxH3hnksyWXUvTx+/lwR57/kkBy3gJuLG+bqojKhLs73xVZt5JVhJWF0c81auVBREcrIUtWkntj5fK7fJaX9dv5YODKyUy3aGPYwxXTGKYT9LrWaw574A9+zv7kSHMFW+8Fr6EZR/5PNhRioGfomRYaaNorqWoB+6sCtVPvy4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371498; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=j6ycJyS58u8wV36TEg6I3IuF42L1x613e3hNw/t4uT4=; b=dgkuq394+Z49340oeyv9pzpF5HnYm2Mb3Gv2QRtMVueAfyZk9bcj2VaCN3sZNdJ1w8HHAu3dTrdvmKShm5LaWQ1CKoS74QZD07m6dA3++KJi6nAQ4WwrKxd2SVeZZstTxGwNLuSsVp4dd2rdpDbT0Eey/TYpEMXhVE76MRe2G1E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371498692626.4047305129434; Thu, 21 May 2026 06:51:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3n4-0000aO-Om; Thu, 21 May 2026 09:50:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3mz-0000ZK-77 for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:18 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3mw-0004lH-Ew for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:16 -0400 Received: from mx-prod-mc-08.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-449-NejNHv8MPN2RFjT9DTb9Ww-1; Thu, 21 May 2026 09:50:06 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 4A37A1801359; Thu, 21 May 2026 13:49:55 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 97D951956053; Thu, 21 May 2026 13:49:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371411; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=j6ycJyS58u8wV36TEg6I3IuF42L1x613e3hNw/t4uT4=; b=HBcsD+/Gba74AQc66HUX2IO+z+dG5jbynsigB/dfpiEWukKK9hXiYJ9subgcO0gvIKcrFf b2+r6vmYC8iFWhBpuUoNNLsCNFsB7osJIxQqtGsebac56lZvWsR3FhZy+Tc+bBD8nsEiGe rWo86c00rnioRlU6LPPOAEILaFEYAz0= X-MC-Unique: NejNHv8MPN2RFjT9DTb9Ww-1 X-Mimecast-MFC-AGG-ID: NejNHv8MPN2RFjT9DTb9Ww_1779371405 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , Peter Xu , Tejus GK Subject: [PULL 01/29] io: invert the return semantics of qio_channel_flush Date: Thu, 21 May 2026 14:49:15 +0100 Message-ID: <20260521134943.1714527-2-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371511652158500 From: Tejus GK With the kernel's zerocopy notification mechanism, the caller can determine whether * All syscalls successfully used zero copy * At least one syscall failed to use zero copy But, as of now QEMU's IO channel flush function semantics are like * 1 =3D> all syscalls failed to use zero copy * 0 =3D> at least one syscall successfully used zero copy This is not aligned with what the kernel reports, and ends up reporting false negatives for cases like when there's just a single successful zerocopy amongst a collection of deferred zero-copies during a flush. Fix this by inverting the return semantics of the IO flush function. Suggested-by: Peter Xu Suggested-by: Daniel P. Berrang=C3=A9 Signed-off-by: Tejus GK Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Daniel P. Berrang=C3=A9 --- include/io/channel-socket.h | 6 +----- include/io/channel.h | 4 ++-- io/channel-socket.c | 16 ++++++++-------- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/include/io/channel-socket.h b/include/io/channel-socket.h index a1ef3136ea..b07cd61477 100644 --- a/include/io/channel-socket.h +++ b/include/io/channel-socket.h @@ -50,11 +50,7 @@ struct QIOChannelSocket { ssize_t zero_copy_queued; ssize_t zero_copy_sent; bool blocking; - /** - * This flag indicates whether any new data was successfully sent with - * zerocopy since the last qio_channel_socket_flush() call. - */ - bool new_zero_copy_sent_success; + bool zero_copy_fallback; }; =20 =20 diff --git a/include/io/channel.h b/include/io/channel.h index 287d10cd6f..98485c9280 100644 --- a/include/io/channel.h +++ b/include/io/channel.h @@ -1147,8 +1147,8 @@ int coroutine_mixed_fn qio_channel_writev_full_all(QI= OChannel *ioc, * If not implemented, acts as a no-op, and returns 0. * * Returns -1 if any error is found, - * 1 if every send failed to use zero copy. - * 0 otherwise. + * 1 if at least one send failed to use zero copy. + * 0 if every send successfully used zero copy. */ =20 int qio_channel_flush(QIOChannel *ioc, diff --git a/io/channel-socket.c b/io/channel-socket.c index 3053b35ad8..ea2ec84108 100644 --- a/io/channel-socket.c +++ b/io/channel-socket.c @@ -72,7 +72,7 @@ qio_channel_socket_new(void) sioc->zero_copy_queued =3D 0; sioc->zero_copy_sent =3D 0; sioc->blocking =3D false; - sioc->new_zero_copy_sent_success =3D false; + sioc->zero_copy_fallback =3D false; =20 ioc =3D QIO_CHANNEL(sioc); qio_channel_set_feature(ioc, QIO_CHANNEL_FEATURE_SHUTDOWN); @@ -880,9 +880,9 @@ static int qio_channel_socket_flush_internal(QIOChannel= *ioc, /* No errors, count successfully finished sendmsg()*/ sioc->zero_copy_sent +=3D serr->ee_data - serr->ee_info + 1; =20 - /* If any sendmsg() succeeded using zero copy, mark zerocopy succe= ss */ - if (serr->ee_code !=3D SO_EE_CODE_ZEROCOPY_COPIED) { - sioc->new_zero_copy_sent_success =3D true; + if (serr->ee_code =3D=3D SO_EE_CODE_ZEROCOPY_COPIED) { + /* If any sendmsg() fell back to a copy, mark fallback as true= */ + sioc->zero_copy_fallback =3D true; } } =20 @@ -900,12 +900,12 @@ static int qio_channel_socket_flush(QIOChannel *ioc, return ret; } =20 - if (sioc->new_zero_copy_sent_success) { - sioc->new_zero_copy_sent_success =3D false; - return 0; + if (sioc->zero_copy_fallback) { + sioc->zero_copy_fallback =3D false; + return 1; } =20 - return 1; + return 0; } =20 #endif /* QEMU_MSG_ZEROCOPY */ --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371496; cv=none; d=zohomail.com; s=zohoarc; b=XgDBo6CcDHpmKuah5XLk4Da5rAEv6LkW4pxj65OSO08mxtCACV8eD7DmAZbyOuq9A8Uv1y9RMPZdav8F1WTTzSdKrUNkueHH6ur8EaeHNBS4yoiZHHsbvWBwO1q1VUciFPOzU3nrlzfv8YMy7zklX+Q+rfZ51H2Spx2xUv6unro= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371496; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bDPJ/rA4TRt7vjgNzC7L2s8kaU1MKdXtrs0Sj3PEP7k=; b=jHC/XXrB0V09Si5MziKsrTw4SgfRMeZw6ujtEx3EI93mhSx0cpJUI5kQaETa3DQRrT1W/W/hGmWk/+uq7nrnh8GHYMtt0waZgBSQOTwAlyPwknaTobv49oPnO4p5/1iRjbWg8pxh3E9Z2lZ0MDPnFYvv4k4camP0MMe+o5u2K+w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371496895883.845953425258; Thu, 21 May 2026 06:51:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3n9-0000cT-IS; Thu, 21 May 2026 09:50:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3n7-0000bk-Lo for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:25 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3n4-0004tT-WB for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:25 -0400 Received: from mx-prod-mc-08.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-318-4fjHUZxwOQmTOUJW14IwNw-1; Thu, 21 May 2026 09:50:09 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C21A318007F2; Thu, 21 May 2026 13:50:00 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id DDAE01956053; Thu, 21 May 2026 13:49:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371422; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bDPJ/rA4TRt7vjgNzC7L2s8kaU1MKdXtrs0Sj3PEP7k=; b=DPzD9k4O9rVx1emGMShoZX6BpgdxMeP7pF+DbPbWo0R95b201feD7VWzuhW7MwZWYho8U6 MxlYJh6p+V4chXq0Ygzb3YoMUhW0vRth/kOrjUPfXASlezTKAQILZR2gn0YfpOKSDW62sN Ft6w8rQXhdbg0CApNUasbTcYLiDe3UU= X-MC-Unique: 4fjHUZxwOQmTOUJW14IwNw-1 X-Mimecast-MFC-AGG-ID: 4fjHUZxwOQmTOUJW14IwNw_1779371407 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , "Maciej S. Szmigiero" Subject: [PULL 02/29] crypto: fix client side anonymous TLS credentials Date: Thu, 21 May 2026 14:49:16 +0100 Message-ID: <20260521134943.1714527-3-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371510737158500 The previous refactoring of credential creation failed to allocate storage fo the anonymous TLS credentials on the client endpoint. Fixes: 70f9fd8dbf7233bee497055a9b7825e3729ce853 Reported-by: Maciej S. Szmigiero Signed-off-by: Daniel P. Berrang=C3=A9 --- crypto/tlscredsanon.c | 2 + tests/unit/test-crypto-tlssession.c | 120 +++++++++++++++++++++++++++- 2 files changed, 121 insertions(+), 1 deletion(-) diff --git a/crypto/tlscredsanon.c b/crypto/tlscredsanon.c index 1551382e1f..190c9833a7 100644 --- a/crypto/tlscredsanon.c +++ b/crypto/tlscredsanon.c @@ -73,6 +73,8 @@ qcrypto_tls_creds_anon_load(QCryptoTLSCredsAnon *creds, box->dh_params); } } else { + box =3D qcrypto_tls_creds_box_new_client(GNUTLS_CRD_ANON); + ret =3D gnutls_anon_allocate_client_credentials(&box->data.anoncli= ent); if (ret < 0) { error_setg(errp, "Cannot allocate credentials: %s", diff --git a/tests/unit/test-crypto-tlssession.c b/tests/unit/test-crypto-t= lssession.c index 0d06a6892e..dc7a01bb06 100644 --- a/tests/unit/test-crypto-tlssession.c +++ b/tests/unit/test-crypto-tlssession.c @@ -24,6 +24,7 @@ #include "crypto-tls-psk-helpers.h" #include "crypto/tlscredsx509.h" #include "crypto/tlscredspsk.h" +#include "crypto/tlscredsanon.h" #include "crypto/tlssession.h" #include "qom/object_interfaces.h" #include "qapi/error.h" @@ -190,6 +191,121 @@ static void test_crypto_tls_session_psk(void) } =20 =20 +static QCryptoTLSCreds *test_tls_creds_anon_create( + QCryptoTLSCredsEndpoint endpoint) +{ + Object *parent =3D object_get_objects_root(); + Object *creds =3D object_new_with_props( + TYPE_QCRYPTO_TLS_CREDS_ANON, + parent, + (endpoint =3D=3D QCRYPTO_TLS_CREDS_ENDPOINT_SERVER ? + "testtlscredsserver" : "testtlscredsclient"), + &error_abort, + "endpoint", (endpoint =3D=3D QCRYPTO_TLS_CREDS_ENDPOINT_SERVER ? + "server" : "client"), + "priority", "NORMAL", + NULL + ); + return QCRYPTO_TLS_CREDS(creds); +} + + +static void test_crypto_tls_session_anon(void) +{ + QCryptoTLSCreds *clientCreds; + QCryptoTLSCreds *serverCreds; + QCryptoTLSSession *clientSess =3D NULL; + QCryptoTLSSession *serverSess =3D NULL; + int channel[2]; + bool clientShake =3D false; + bool serverShake =3D false; + int ret; + + /* We'll use this for our fake client-server connection */ + ret =3D qemu_socketpair(AF_UNIX, SOCK_STREAM, 0, channel); + g_assert(ret =3D=3D 0); + + /* + * We have an evil loop to do the handshake in a single + * thread, so we need these non-blocking to avoid deadlock + * of ourselves + */ + qemu_set_blocking(channel[0], false, &error_abort); + qemu_set_blocking(channel[1], false, &error_abort); + + clientCreds =3D test_tls_creds_anon_create( + QCRYPTO_TLS_CREDS_ENDPOINT_CLIENT); + g_assert(clientCreds !=3D NULL); + + serverCreds =3D test_tls_creds_anon_create( + QCRYPTO_TLS_CREDS_ENDPOINT_SERVER); + g_assert(serverCreds !=3D NULL); + + /* Now the real part of the test, setup the sessions */ + clientSess =3D qcrypto_tls_session_new( + clientCreds, NULL, NULL, + QCRYPTO_TLS_CREDS_ENDPOINT_CLIENT, &error_abort); + g_assert(clientSess !=3D NULL); + + serverSess =3D qcrypto_tls_session_new( + serverCreds, NULL, NULL, + QCRYPTO_TLS_CREDS_ENDPOINT_SERVER, &error_abort); + g_assert(serverSess !=3D NULL); + + /* For handshake to work, we need to set the I/O callbacks + * to read/write over the socketpair + */ + qcrypto_tls_session_set_callbacks(serverSess, + testWrite, testRead, + &channel[0]); + qcrypto_tls_session_set_callbacks(clientSess, + testWrite, testRead, + &channel[1]); + + /* + * Finally we loop around & around doing handshake on each + * session until we get an error, or the handshake completes. + * This relies on the socketpair being nonblocking to avoid + * deadlocking ourselves upon handshake + */ + do { + int rv; + if (!serverShake) { + rv =3D qcrypto_tls_session_handshake(serverSess, + &error_abort); + g_assert(rv >=3D 0); + if (rv =3D=3D QCRYPTO_TLS_HANDSHAKE_COMPLETE) { + serverShake =3D true; + } + } + if (!clientShake) { + rv =3D qcrypto_tls_session_handshake(clientSess, + &error_abort); + g_assert(rv >=3D 0); + if (rv =3D=3D QCRYPTO_TLS_HANDSHAKE_COMPLETE) { + clientShake =3D true; + } + } + } while (!clientShake || !serverShake); + + + /* Finally make sure the server & client validation is successful. */ + g_assert(qcrypto_tls_session_check_credentials(serverSess, + &error_abort) =3D=3D 0); + g_assert(qcrypto_tls_session_check_credentials(clientSess, + &error_abort) =3D=3D 0); + + object_unparent(OBJECT(serverCreds)); + object_unparent(OBJECT(clientCreds)); + + qcrypto_tls_session_free(serverSess); + qcrypto_tls_session_free(clientSess); + + close(channel[0]); + close(channel[1]); +} + + struct QCryptoTLSSessionTestData { const char *servercacrt; const char *clientcacrt; @@ -421,9 +537,11 @@ int main(int argc, char **argv) test_tls_init(KEYFILE); test_tls_psk_init(PSKFILE); =20 - /* Simple initial test using Pre-Shared Keys. */ + /* Simple initial tests using Pre-Shared Keys & anon creds */ g_test_add_func("/qcrypto/tlssession/psk", test_crypto_tls_session_psk); + g_test_add_func("/qcrypto/tlssession/anon", + test_crypto_tls_session_anon); =20 /* More complex tests using X.509 certificates. */ # define TEST_SESS_REG(name, caCrt, \ --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371485; cv=none; d=zohomail.com; s=zohoarc; b=P+/LYM0PPUXdgi5qBJMrb9jYIg0Ik6IVCRAYwfNvtyC1zfgg9r5a9dyBiMBRLbsij8q2B9emTMRLlZXkrZMmZG/a4Gl1vqFGbMtMPIU1SATIOupPetG95eaan0LwjhkxBSX285WX6FHl1gIF3tbCf+qSxMcwNXg2mqv1aVl7LoI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371485; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dsKkHwuODY+JPUVxkGiOJ3BUkUv5DrPEH9gjMlZE86A=; b=LG71nPTDFozZcHwZQx+5KtUlDkv1rgkPvZELWgXl/J7UDWhvZmXtUNRcD4tGTUu70LzZtvensLM0rZMpDLyrAXSbLENDqHGt0hA50XutRXThVhWOiBdYsvSbm+yEhKQ3eBB1DYOa8vosD0SYoNXRp9hTC6b2nClo0OltjbQ+sJc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371485100723.6717357655375; Thu, 21 May 2026 06:51:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3nD-0000e2-HS; Thu, 21 May 2026 09:50:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nC-0000dj-3s for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:30 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3n4-0004tP-Pk for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:29 -0400 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-425-CRcTR5EVNoyowSEzPwwoXg-1; Thu, 21 May 2026 09:50:19 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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 EE326184544F; Thu, 21 May 2026 13:50:05 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 42B611955F19; Thu, 21 May 2026 13:50:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371422; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dsKkHwuODY+JPUVxkGiOJ3BUkUv5DrPEH9gjMlZE86A=; b=WL2um1+dpJKWTMOu/RSDk47Mjy0lXJKbyPtNJxznd9BsfIqZHcNbChAILWHoZkC3EqAe4H GapMxaPS1FBVWjntz8mCgglcPRsb7jUjsIVhd38LDmipgAdSQe7EDk78/+5QMsZEgTIITw GfvAhsmjWO4R3L1FBXP9qrCE8nkdhSU= X-MC-Unique: CRcTR5EVNoyowSEzPwwoXg-1 X-Mimecast-MFC-AGG-ID: CRcTR5EVNoyowSEzPwwoXg_1779371416 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa Subject: [PULL 03/29] python: bump qemu.qmp to v0.0.6 Date: Thu, 21 May 2026 14:49:17 +0100 Message-ID: <20260521134943.1714527-4-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, LOTS_OF_MONEY=0.001, MONEY_NOHTML=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371487271154100 From: John Snow This release removes some deprecated warnings for our use of the old sendmsg API on older python versions. Acked-by: Kevin Wolf Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: John Snow Signed-off-by: Daniel P. Berrang=C3=A9 --- python/scripts/vendor.py | 4 ++-- ...ny.whl =3D> qemu_qmp-0.0.6-py3-none-any.whl} | Bin 72263 -> 72379 bytes pythondeps.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename python/wheels/{qemu_qmp-0.0.5-py3-none-any.whl =3D> qemu_qmp-0.0.6-= py3-none-any.whl} (64%) diff --git a/python/scripts/vendor.py b/python/scripts/vendor.py index 7c61afd37b..1bb59d863a 100755 --- a/python/scripts/vendor.py +++ b/python/scripts/vendor.py @@ -43,8 +43,8 @@ def main() -> int: packages =3D { "meson=3D=3D1.11.1": "9b3a023657e393dbc5335b95c561337d49b7a458f5541e47ec44f2cc566e0d80", - "qemu.qmp=3D=3D0.0.5": - "e05782d6df5844b34e0d2f7c68693525da074deef7b641c1401dda6e4e3d6303", + "qemu.qmp=3D=3D0.0.6": + "5d7c5af0e9de427696e3bf72e333965c3a697929f77f6b7ddc30c989fc7b539b", "pycotap=3D=3D1.3.1": "1c3a25b3ff89e48f4e00f1f71dbbc1642b4f65c65d416524d07e73492fff25ea", } diff --git a/python/wheels/qemu_qmp-0.0.5-py3-none-any.whl b/python/wheels/= qemu_qmp-0.0.6-py3-none-any.whl similarity index 64% rename from python/wheels/qemu_qmp-0.0.5-py3-none-any.whl rename to python/wheels/qemu_qmp-0.0.6-py3-none-any.whl index 6372b7544ffb015a5c77d9686e921b65c848d433..5754130b408e2f13081b368a550= 6101a6ac490f2 100644 GIT binary patch delta 22133 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

Tv~!-sX~@YhrW ziBm&$5@z(p>SP4v2S&M9+weW9eSnvWtMk*P;|pL@YZ&DRGNQm900uvsUh>8 z4NXIMK6gW7fOx2-NLKNx%Aa(jqE9uZ{r{%BOwS1Rt5?mFYPhA?sNaF$e~Rvh@CZ|Q z3~Em=3D+U%o(X_B|;{7sA1wytsOulJM!@b4X-b>67MH{{yU4Qa>#KA6*lvC(#8nJ93J zmL=3DoC=3D^tSLNb6%29a(?(*Ida>UEu>wEkdF<9`O;xMz_kJMG6^msE&eN8ee#WjAXwE z2-F4Z2v^N4;*gjvwMg4{Z*1H`!?&INX&Tbia^}5Md)wVp9Pae=3DJ7VEbivWeuY+dLP-qp1IQE)h>Cs$5Y&AO$_t>(j-K(A%0Du^ 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 b{D%Sn02)H+NdMI=3D0.5", installed = =3D "1.2.2" } # only include dependencies that can be guaranteed via configure from # system packages, or python packages we vendor. [tooling] -"qemu.qmp" =3D { accepted =3D ">=3D0.0.5", installed =3D "0.0.5" } +"qemu.qmp" =3D { accepted =3D ">=3D0.0.5", installed =3D "0.0.6" } "qemu" =3D { path =3D "python/" } # NB: The following dependencies should be a little bit more modern than # the versions listed here, but we are still using Debian 11 for several --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371446; cv=none; d=zohomail.com; s=zohoarc; b=l+oV5wSCopcUZRRu0vWcOwmpvgJZ5n92MBMygShKhv9HCIM3094EeYxEQVSnCKPqAa/bwwbhZt9KX64WD8IlSbcdXcJe6wzvL0s/VV0KdufU7GwgX9EdFihyVfgW8WrFttwU1RlKwqKsMdkdvb7n/R4tFtzEY2If6dSo69xn+qA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371446; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=f6PI8Ub5T3wU1cK0+j/pGNMdjp2DJFpAxaYaEg36Xf4=; b=hmjC022783xBSkklavRDeg3+t0bey2y7QklIbutTv0zj9GnrVtL+NvS7xukmCREOv8KV6YMwyh93nVxKlJkYjBKYq86rkGiSFF3mnJBvgIqvWTlFJ+Vj/YMrdlNPo+mfitMtSg7Vga6mim2ce/ywbnab36bkv/4Cyi1CRjf0BF0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371446602367.4201772507645; Thu, 21 May 2026 06:50:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3n8-0000c6-8Q; Thu, 21 May 2026 09:50:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3n6-0000b1-Cr for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:24 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3n4-0004tI-Ez for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:24 -0400 Received: from mx-prod-mc-08.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-453-7oZFDzHYOmS_fEl5kcRBqg-1; Thu, 21 May 2026 09:50:19 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 94AB918007F2; Thu, 21 May 2026 13:50:10 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6AE8B1956053; Thu, 21 May 2026 13:50:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371421; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=f6PI8Ub5T3wU1cK0+j/pGNMdjp2DJFpAxaYaEg36Xf4=; b=gTn7IbbNus3EGzHg5gdcF6+4BvvpfjjUSz6f6eWZXsBWvSmNxHB0kwVNFCws2McNC9CP9T xKn2cLEK8otyaOkpDHzA5djFt7TfPngOczJEmuLKl5Au876a3vm+ZUbZuP6Q4tJ4jwbfkt VVqbJeJ+x9s8vsRRzA9HDNaieEQPdZw= X-MC-Unique: 7oZFDzHYOmS_fEl5kcRBqg-1 X-Mimecast-MFC-AGG-ID: 7oZFDzHYOmS_fEl5kcRBqg_1779371417 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa Subject: [PULL 04/29] gitlab: ensure all meson jobs capture build/meson-logs by default Date: Thu, 21 May 2026 14:49:18 +0100 Message-ID: <20260521134943.1714527-5-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371487500158500 The build-without-defaults and build-tci jobs do not capture any artifacts, despite running 'make check'. This has proved a repeated bug with CI jobs, so introduce a new '.meson_job_template' rule which always captures 'build/meson-logs'. Jobs can still provide their own 'artifacts:' config which will override this default behaviour. Acked-by: Kevin Wolf Reviewed-by: Pierrick Bouvier Signed-off-by: Daniel P. Berrang=C3=A9 --- .gitlab-ci.d/buildtest-template.yml | 30 ++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/.gitlab-ci.d/buildtest-template.yml b/.gitlab-ci.d/buildtest-t= emplate.yml index d866cb12bb..005058625e 100644 --- a/.gitlab-ci.d/buildtest-template.yml +++ b/.gitlab-ci.d/buildtest-template.yml @@ -1,5 +1,20 @@ -.native_build_job_template: + +# Any job running meson should capture meson logs +# by default. Some jobs might override the artifacts +# to capture further files +.meson_job_template: extends: .base_job_template + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" + when: always + expire_in: 7 days + paths: + - build/meson-logs + reports: + junit: build/meson-logs/*.junit.xml + +.native_build_job_template: + extends: .meson_job_template stage: build image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG cache: @@ -60,7 +75,7 @@ - build/**/*.c.o.d =20 .common_test_job_template: - extends: .base_job_template + extends: .meson_job_template stage: test image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG script: @@ -87,14 +102,7 @@ # Prevent logs from the build job that run earlier # from being duplicated in the test job artifacts - rm -f build/meson-logs/* - artifacts: - name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" - when: always - expire_in: 7 days - paths: - - build/meson-logs - reports: - junit: build/meson-logs/*.junit.xml + =20 .functional_test_job_template: extends: .common_test_job_template @@ -125,7 +133,7 @@ QEMU_JOB_FUNCTIONAL: 1 =20 .wasm_build_job_template: - extends: .base_job_template + extends: .meson_job_template stage: build image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG before_script: --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371515; cv=none; d=zohomail.com; s=zohoarc; b=L55z3eYnFS6qgyJn+kASA2+ZB+Nb+08KvyD83/YUIR+GJ4Eu28sWCQSY7PHyUnSv311ub+wywaD8QgjE+diwZYQMl5yo9pahIclw/Z41EaKPR+COflIvx8gStCHJDFFp9+mpfhLbyxaJhDVoQsp7Y5QqSR5EHfPbEqE/LfNsWrA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371515; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Llt01sfV1uMijeO9+B9YU6bVdoSwllDNDiw/k0nL1mE=; b=GFqSYNwvROcnUNzBQftGQx0sfuukmMNbQgc2Zi3biTqw8ICSOq9GRhtvnttcujAbrkyUhWlhJblM0KhA/jCOgqCn/CUwY31iD5wX8VQwyUyrro/GZWdHpNaKFrHRCg1pXzFg002e7K024N+PYMFSIf5fIf/Yfc7Ql8lPZKKoJcs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371514998331.0488050289333; Thu, 21 May 2026 06:51:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3nc-0000l9-SL; Thu, 21 May 2026 09:51:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nK-0000hP-NB for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:40 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nH-0004ve-K3 for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:37 -0400 Received: from mx-prod-mc-08.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-25-Odi9-eBLO522gTCfJdtgeA-1; Thu, 21 May 2026 09:50:21 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 36C861800611; Thu, 21 May 2026 13:50:15 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 1143A1956053; Thu, 21 May 2026 13:50:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371434; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Llt01sfV1uMijeO9+B9YU6bVdoSwllDNDiw/k0nL1mE=; b=FgPg55KQei31Aj1dap69WTTw44sBw/bbbhgYCaSycndX6gMiIEEU48V0jVax7vXo6qqmjV leNtzL4DuLGximUpuAGr/Wc6QGnirSYeNwtOJ945ct+cBqgUgJdgFC4WPKp1iXHrbSc+Uv YptbMYM1x4PGIjj9EzlVJFqv1gAUXdY= X-MC-Unique: Odi9-eBLO522gTCfJdtgeA-1 X-Mimecast-MFC-AGG-ID: Odi9-eBLO522gTCfJdtgeA_1779371419 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , Thomas Huth Subject: [PULL 05/29] iotests: print reason when I/O test is skipped in TAP mode Date: Thu, 21 May 2026 14:49:19 +0100 Message-ID: <20260521134943.1714527-6-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371518309154100 The TAP output on a skipped test: ok raw 181 # SKIP is not informative. The test program included a reason, and that should be displayed in TAP mode (it is already shown in non-TAP mode): ok raw 181 # SKIP Postcopy is not supported Reviewed-by: Kevin Wolf Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Daniel P. Berrang=C3=A9 --- tests/qemu-iotests/testrunner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/qemu-iotests/testrunner.py b/tests/qemu-iotests/testrunn= er.py index e2a3658994..dbe2dddc32 100644 --- a/tests/qemu-iotests/testrunner.py +++ b/tests/qemu-iotests/testrunner.py @@ -174,7 +174,7 @@ def test_print_one_line(self, test: str, elif status =3D=3D 'fail': print(f'not ok {self.env.imgfmt} {test}') elif status =3D=3D 'not run': - print(f'ok {self.env.imgfmt} {test} # SKIP') + print(f'ok {self.env.imgfmt} {test} # SKIP {description}') return =20 if lasttime: --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371499; cv=none; d=zohomail.com; s=zohoarc; b=JYurDK5KuVpuTWDN19KZ/HQDkDIa8fIBaCZcQKARU0iTW8ILe1/MGwXiJVMmRexbTnyzPWce7n18sL1+SeRBZwmCaHbkwu/7O4RYCLt1xGyhj/A0z4TRNIIjirrIHhvJ4AuXVwgSAVHMixsx4bxPvm1dAY0FEKnYktNhOIc9c3k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371499; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2cMy89RUByGmpyRSjhTNYIbKdplVLNzNWvqU2dmcLSk=; b=kQNLdeJqCpr6hZ9xxDaINaks/slbmdtjA8N75pHXwSuakxsM6pNhu42Y9hFmMBYRhEZxE9LPLSc8NN3sQKtDvOxhH+egfgeIECOK5e1N/8gwp6FOnSkdXo86FdHD/vUJrqp2EtONnKvRtXQs9gHWwZnDTN4Mu+IDbyPHGv0HuR0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371499209532.8850956967116; Thu, 21 May 2026 06:51:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3nn-0000so-2w; Thu, 21 May 2026 09:51:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nL-0000hX-Rs for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:40 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nJ-0004w1-4L for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:39 -0400 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-444-uu2hr90wNhe7vYhaV8HBSQ-1; Thu, 21 May 2026 09:50:27 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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 CDCBE1800578; Thu, 21 May 2026 13:50:19 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id AD6971956053; Thu, 21 May 2026 13:50:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371436; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2cMy89RUByGmpyRSjhTNYIbKdplVLNzNWvqU2dmcLSk=; b=IK+8JTQGHKgv0TpEYauvc2h/kNbbPCJ5HeYY/s6P7awDti+j3BmqN6A/hElGaujq3wepbA CxvRhCzJEwAVRfn6iHp18/DPKeKf4OJ/dQuZrJOjn6JgkwbKSNv3JlFUDBmQciRWqJ/V4w q9AY8FML5EawQgOq08m6bph1jhvy2rs= X-MC-Unique: uu2hr90wNhe7vYhaV8HBSQ-1 X-Mimecast-MFC-AGG-ID: uu2hr90wNhe7vYhaV8HBSQ_1779371424 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , Thomas Huth Subject: [PULL 06/29] iotests: remove redundant meson suite for iotests Date: Thu, 21 May 2026 14:49:20 +0100 Message-ID: <20260521134943.1714527-7-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371511453158500 If a test is in the 'block-slow' or 'block-thorough' suite, there is no need to also add it to the 'slow' or 'thorough' suites. Acked-by: Kevin Wolf Tested-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Daniel P. Berrang=C3=A9 --- tests/qemu-iotests/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/qemu-iotests/meson.build b/tests/qemu-iotests/meson.build index d7bae71ced..bf588cc2c9 100644 --- a/tests/qemu-iotests/meson.build +++ b/tests/qemu-iotests/meson.build @@ -33,7 +33,7 @@ foreach format, speed: qemu_iotests_formats if speed =3D=3D 'quick' suites =3D 'block' else - suites =3D ['block-' + speed, speed] + suites =3D ['block-' + speed] endif =20 args =3D ['-tap', '-' + format] --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371468; cv=none; d=zohomail.com; s=zohoarc; b=Me9VAQihH8Asx19sD3x8myhYXx6lp6pBOyQxieDJf/XUddFaUUVwubrN54Qj0vanUC29NdCgBNVZWqXXZ5ps3XeQ7vcxiPBSn5CQPvhhW+W58GfCRJnwbHPyTPxGq0l2NZg+pqLi3ChDPIeoIInNXt+rlxXfJcNhSMNUVNVHGjY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371468; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=B7c5l9KxYlqTVQavHSDIGnpaQmuIRpDFa29K67QxinQ=; b=JtGPt2Bmff4DZxgMEobr3/qlH9gZVnib8ZL+j1lzeyBn9bUYtCfu5cNJUO5qD7hbpiMnEBRtGwytOKtYMBenFG2clgQ2cz6JT6szJd14cQrHVYLmNX9HD63/5IwMWIGTYIcWT5FX+1OrfDYxZjCx0up8CnekezEip45fL8jomqU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177937146824499.6270925218704; Thu, 21 May 2026 06:51:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3nO-0000iP-4F; Thu, 21 May 2026 09:50:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nI-0000h2-HV for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nG-0004vY-Vi for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:36 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-531-cP6dqsZvMoGUuKbL4sfabw-1; Thu, 21 May 2026 09:50:29 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id DCCAA19540CB; Thu, 21 May 2026 13:50:24 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4A1A91956053; Thu, 21 May 2026 13:50:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371434; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=B7c5l9KxYlqTVQavHSDIGnpaQmuIRpDFa29K67QxinQ=; b=evm/W+bY6EtYoXpqRSTJJmSN9QzJirTfqkg1RJ7CXk2377OGrG3SuuOskOS/OgpgJmDJKP 2OHYvpJ/ugvMqzp/4seC5YeCrpH9kvqjRKJkTd9RX1y0Enm0cyYM8LPeNIEFWK3vKZuuWz rZ4NFBrQ1lo/jGnu4QENWbK3wjbW38k= X-MC-Unique: cP6dqsZvMoGUuKbL4sfabw-1 X-Mimecast-MFC-AGG-ID: cP6dqsZvMoGUuKbL4sfabw_1779371428 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , Thomas Huth Subject: [PULL 07/29] iotests: ensure all qcow2 I/O tests are able to be run via make Date: Thu, 21 May 2026 14:49:21 +0100 Message-ID: <20260521134943.1714527-8-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371471600154100 For block formats marked as 'quick', only tests in the 'auto' group are added to the meson test suite. The result of this is that qcow2 tests not in the 'auto' group cannot be run at all, even if passing SPEED=3Dslow or SPEED=3Dthorough. To fix this we need todo two passes over the I/O test list. First add all tests from 'auto' group into the 'block' suite, so they are run by default. Then on the second pass add any tests which were not in 'auto' into the 'block-slow' suite, so they get run when SPEED=3Dslow or SPEED=3Dthorough. Reviewed-by: Kevin Wolf Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Daniel P. Berrang=C3=A9 --- tests/qemu-iotests/meson.build | 48 ++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/tests/qemu-iotests/meson.build b/tests/qemu-iotests/meson.build index bf588cc2c9..1a24d801a3 100644 --- a/tests/qemu-iotests/meson.build +++ b/tests/qemu-iotests/meson.build @@ -30,16 +30,48 @@ endforeach qemu_iotests_check_cmd =3D files('check') =20 foreach format, speed: qemu_iotests_formats + # Formats tagged 'quick' get the subset of tests in the 'auto' + # group, run by default with 'make check' / 'make check-block' + seen =3D [] if speed =3D=3D 'quick' - suites =3D 'block' + args =3D ['-tap', '-' + format, '-g', 'auto'] + suites =3D ['block'] + + rc =3D run_command( + [python, qemu_iotests_check_cmd] + args + ['-n'], + check: true, + ) + + foreach item: rc.stdout().strip().split() + seen +=3D item + args =3D [qemu_iotests_check_cmd, + '-tap', '-' + format, item, + '--source-dir', meson.current_source_dir(), + '--build-dir', meson.current_build_dir()] + # Some individual tests take as long as 45 seconds + # Bump the timeout to 3 minutes for some headroom + # on slow machines to minimize spurious failures + test('io-' + format + '-' + item, + python, + args: args, + depends: qemu_iotests_binaries, + env: qemu_iotests_env, + protocol: 'tap', + timeout: 180, + suite: suites) + endforeach + endif + + suites =3D [] + # Any format tagged quick or slow also gets added to slow + # otherwise its tagged thorough + if speed !=3D 'thorough' + suites +=3D ['block-slow'] else - suites =3D ['block-' + speed] + suites +=3D ['block-thorough'] endif =20 args =3D ['-tap', '-' + format] - if speed =3D=3D 'quick' - args +=3D ['-g', 'auto'] - endif =20 rc =3D run_command( [python, qemu_iotests_check_cmd] + args + ['-n'], @@ -47,6 +79,12 @@ foreach format, speed: qemu_iotests_formats ) =20 foreach item: rc.stdout().strip().split() + # Skip any tests already added from the 'auto' group + # as they're run in the 'quick' suite already + if item in seen + continue + endif + args =3D [qemu_iotests_check_cmd, '-tap', '-' + format, item, '--source-dir', meson.current_source_dir(), --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371665; cv=none; d=zohomail.com; s=zohoarc; b=E2ZRhBZSB210BivSRFdFytt5uMq9uRiXhvQHBhtMjIacjY8QEq9zWAPAri7F/F6vu8+28BaLwVPpCYKkB3vRwKDt6cYQIwWpfQxWH66DkecxYLUlgOjpivCKNAwVcVVFL5QKMq48a5Hcf/HiR+ixbVYRc7xUU4+AhRZWBKzfl1Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371665; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=GPWPFWZBUfCl06aIYsOJIuqe4Yrra14lHq3PxtyVKIo=; b=ju53GMKcolxk02mYgYfwP+9gPF3h2lgLJtHUwAhSYXIwqkWOVEseMBBXaen9iu/9tQj16hKtAOsJDMn+pctxzCk7hkv4NGwO6yqRYm+o/GnUr1QliwfWzjo2HKTqNkce+4LL5z+capdaLhUR+dUNFw7kvhAfG8SmDu66GHYawh8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371665898392.5311729763481; Thu, 21 May 2026 06:54:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3np-0000ye-Cr; Thu, 21 May 2026 09:51:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nN-0000iR-Pj for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:42 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nM-0004wg-Bx for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:41 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-306-SDU6PhWHMqyRZvJHiRj_tg-1; Thu, 21 May 2026 09:50:34 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id B0700194510D; Thu, 21 May 2026 13:50:29 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 5D10B1956053; Thu, 21 May 2026 13:50:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371439; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GPWPFWZBUfCl06aIYsOJIuqe4Yrra14lHq3PxtyVKIo=; b=QK5uEQuw53FbJu9/l+xi6dNP3ObH/dGBIeX0A0at/lH3PtTa6Us1FaB5QO0s9ikHk20KBg 7VwCv8f5l32R7ooV2RXpYHruisxG8BqD6o/gZEMfUQmI2LouUdSqcrZ/NooA7Gbn9v2qD/ 8c5hdC+a1NWSHavnJ03lG5vk3+I1BYo= X-MC-Unique: SDU6PhWHMqyRZvJHiRj_tg-1 X-Mimecast-MFC-AGG-ID: SDU6PhWHMqyRZvJHiRj_tg_1779371433 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , Thomas Huth Subject: [PULL 08/29] scripts/mtest2make: ensure output has stable sorting Date: Thu, 21 May 2026 14:49:22 +0100 Message-ID: <20260521134943.1714527-9-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371683687158500 When debugging mtest2make.py changes it is important to be able to compare the old and new output. This requires that any lists in the output have stable sort ordering. Acked-by: Kevin Wolf Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Daniel P. Berrang=C3=A9 --- scripts/mtest2make.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/scripts/mtest2make.py b/scripts/mtest2make.py index 4b252defc3..915f02d600 100644 --- a/scripts/mtest2make.py +++ b/scripts/mtest2make.py @@ -67,8 +67,10 @@ def process_tests(test, targets, suites): suites[s].speeds.add('thorough') =20 def emit_prolog(suites, prefix): - all_targets =3D ' '.join((f'{prefix}-{k}' for k in suites.keys())) - all_xml =3D ' '.join((f'{prefix}-report-{k}.junit.xml' for k in suites= .keys())) + all_targets =3D ' '.join((f'{prefix}-{k}' + for k in sorted(suites.keys()))) + all_xml =3D ' '.join((f'{prefix}-report-{k}.junit.xml' + for k in sorted(suites.keys()))) print() print(f'all-{prefix}-targets =3D {all_targets}') print(f'all-{prefix}-xml =3D {all_xml}') @@ -81,12 +83,12 @@ def emit_prolog(suites, prefix): print(f'\t$(MAKE) {prefix}$* MTESTARGS=3D"$(MTESTARGS) --logbase {pref= ix}-report$*" && ln -f meson-logs/$@ .') =20 def emit_suite(name, suite, prefix): - deps =3D ' '.join(suite.deps) + deps =3D ' '.join(sorted(suite.deps)) print() print(f'.{prefix}-{name}.deps =3D {deps}') print(f'.ninja-goals.check-build +=3D $(.{prefix}-{name}.deps)') =20 - names =3D ' '.join(suite.names(name)) + names =3D ' '.join(sorted(suite.names(name))) targets =3D f'{prefix}-{name} {prefix}-report-{name}.junit.xml' if not name.endswith('-slow') and not name.endswith('-thorough'): targets +=3D f' {prefix} {prefix}-report.junit.xml' --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371519; cv=none; d=zohomail.com; s=zohoarc; b=bnTxXcInS5kXPeoImObJTTk3i/tXOVmV+Huvk+fOZPTYanzcl2ibyni7z57r+7F/Gnn5YQGNccd0vGj2V4UbB7KlJCYDw99sI0FtydWMOvnF4cJHuxakyc37tQvmUVu7UNW/3EL/JNM1gQrCrNO1H9GxUdQlGOzDTGQhRMlmxkc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371519; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Hc2Tp08f8byxhDOq5HgFnpy1NP/YS++i+tAQt8iu9DM=; b=nG4E7q1ssEqyng72mvR20tijPltNDEDSRWwDfciQ8EGPG25G40cmrcHdYpdHJx2ij+lSRQ/4gPSdMnaR+GLZx5RazuzoP8lVPY7Py6qSKuFuvcFHfkZALm6KETNHPEUpJgnCuE74XSYMN8ntv7LVRVjJblAQEqh2/hXtVbE28Qw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371519629620.2757448247895; Thu, 21 May 2026 06:51:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3nq-00010z-UR; Thu, 21 May 2026 09:51:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nS-0000mI-JW for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:52 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nQ-0004xf-Jt for qemu-devel@nongnu.org; Thu, 21 May 2026 09:50:46 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-149-eDyUp6nTM0S29TTkdU4YEw-1; Thu, 21 May 2026 09:50:39 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id AD06C1944B24; Thu, 21 May 2026 13:50:34 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 388D31956053; Thu, 21 May 2026 13:50:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371443; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Hc2Tp08f8byxhDOq5HgFnpy1NP/YS++i+tAQt8iu9DM=; b=dam5ZehSAlYT8LRDc2kowD0J8+aXiuuvBUamipPPKZQA5AvXnpSh5LnIQIqonq2l5Tw+DI f9SilnuhCN8jm3lB8glx75u1Mx47iYQgoDa+d+BZea6EJgP0MQr3PQ/ncqKmZY+JISSPU8 uBxqJMPF9ImgCZPU5wD8ZE2OtopY8wo= X-MC-Unique: eDyUp6nTM0S29TTkdU4YEw-1 X-Mimecast-MFC-AGG-ID: eDyUp6nTM0S29TTkdU4YEw_1779371438 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa Subject: [PULL 09/29] scripts/mtest2make: support optional tests grouping Date: Thu, 21 May 2026 14:49:23 +0100 Message-ID: <20260521134943.1714527-10-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371522204154100 Currently tests can be classified into three speed groups depending on whether the meson suite name ends in '-slow' or '-thorough' or neither. This gets turned into make targets that match the name of the meson suite, with the speed suffix stripped. e.g. * suite=3Dblock -> 'make check-block' * suite=3Dblock-slow -> 'make check-block SPEED=3Dslow' * suite=3Dblock-thorough -> 'make check-block SPEED=3Dthorough' The set of tests under the "thorough" speed, however, can get rather large and it would be useful to have a way to expose further make targets for directly running a particular subset of tests. This needs a way to run a target without requiring the SPEED variable, while also not having them enabled by default as if they were 'quick' tests. This modifies mtest2make.py to support this idea by allowing for a new suffix '-optional' on a suite. When this is present, a correspondingly named make target will be created without the '-optional' suffix which will never be run automatically. This is intended to be combined with use of other suites. For example, a single NBD test might be added to two suites, 'block-thorough' and 'block-nbd-optional'. This would allow running it as part of all the block tests with 'make check-block SPEED=3Dthorough', and as part of a standalone target 'make check-block-nbd'. Acked-by: Kevin Wolf Reviewed-by: Pierrick Bouvier Signed-off-by: Daniel P. Berrang=C3=A9 --- scripts/mtest2make.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/scripts/mtest2make.py b/scripts/mtest2make.py index 915f02d600..383ea68b16 100644 --- a/scripts/mtest2make.py +++ b/scripts/mtest2make.py @@ -22,7 +22,7 @@ def names(self, base): print(r''' SPEED =3D quick =20 -.speed.quick =3D $(sort $(filter-out %-slow %-thorough, $1)) +.speed.quick =3D $(sort $(filter-out %-slow %-thorough %-optional, $1)) .speed.slow =3D $(sort $(filter-out %-thorough, $1)) .speed.thorough =3D $(sort $1) =20 @@ -66,10 +66,15 @@ def process_tests(test, targets, suites): s =3D s[:-9] suites[s].speeds.add('thorough') =20 +def target_name(suite): + if suite.endswith('-optional'): + return suite[0:-9] + return suite + def emit_prolog(suites, prefix): - all_targets =3D ' '.join((f'{prefix}-{k}' + all_targets =3D ' '.join((f'{prefix}-{target_name(k)}' for k in sorted(suites.keys()))) - all_xml =3D ' '.join((f'{prefix}-report-{k}.junit.xml' + all_xml =3D ' '.join((f'{prefix}-report-{target_name(k)}.junit.xml' for k in sorted(suites.keys()))) print() print(f'all-{prefix}-targets =3D {all_targets}') @@ -83,14 +88,17 @@ def emit_prolog(suites, prefix): print(f'\t$(MAKE) {prefix}$* MTESTARGS=3D"$(MTESTARGS) --logbase {pref= ix}-report$*" && ln -f meson-logs/$@ .') =20 def emit_suite(name, suite, prefix): + tgtname =3D target_name(name) deps =3D ' '.join(sorted(suite.deps)) print() - print(f'.{prefix}-{name}.deps =3D {deps}') - print(f'.ninja-goals.check-build +=3D $(.{prefix}-{name}.deps)') + print(f'.{prefix}-{tgtname}.deps =3D {deps}') + print(f'.ninja-goals.check-build +=3D $(.{prefix}-{tgtname}.deps)') =20 names =3D ' '.join(sorted(suite.names(name))) - targets =3D f'{prefix}-{name} {prefix}-report-{name}.junit.xml' - if not name.endswith('-slow') and not name.endswith('-thorough'): + targets =3D f'{prefix}-{tgtname} {prefix}-report-{tgtname}.junit.xml' + if not name.endswith('-slow') and \ + not name.endswith('-thorough') and \ + not name.endswith('-optional'): targets +=3D f' {prefix} {prefix}-report.junit.xml' print(f'ifneq ($(filter {targets}, $(MAKECMDGOALS)),)') # for the "base" suite possibly add FOO-slow and FOO-thorough --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371631; cv=none; d=zohomail.com; s=zohoarc; b=VdEfwxoRFsM/9umKcjc/dpCgYcpUGf7XltO/gp10lbL+/mDUuJcaUq7EUc4NgYWCZQpSP81+qc9h08rfIHlW+qBU5A1K6A+8oN/K/K5UfTZ5oZLUpCE+DLJrdanyo+R3r1CLvVjR/puKgGV1sXKgfl23sb2aKFvDk/mISD4xL78= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371631; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=g0mdRxEs7jIc/mN/FPdqHSCe8wZeMa+T1SuzpES74iw=; b=OSrhMrB5kc58wDPXBn94LIQpySle1I0Cb+rAgT9YXpGGr+6B4TrTJZtnSFA11Lvxi49hW6cMfkHA3VOrbWwi6kjiJMbUIsPXWISTaODyK0IQncRqHTJUQELbDlZj1+dIpz5cvYjAWSS+dw2Vo44HR1b+U6onhPxAcQSpc4xySoo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371631046171.7572443903108; Thu, 21 May 2026 06:53:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3np-0000yT-22; Thu, 21 May 2026 09:51:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nj-0000q6-QR for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:03 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3ng-00051r-Cv for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:01 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-383-2zg7yAfPOSGUi95OP5rY3Q-1; Thu, 21 May 2026 09:50:53 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id EA73E1944DD7; Thu, 21 May 2026 13:50:40 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 292A61956056; Thu, 21 May 2026 13:50:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371459; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=g0mdRxEs7jIc/mN/FPdqHSCe8wZeMa+T1SuzpES74iw=; b=aAmhkNhCZNuAoSpAQGCu23R28RCUHA7rFkx8lOQTtq5i4m+7igBfVD3z9JNWItRLYlsMGB OrnEmkwiadZZzhWInrxOHbCBbGM1gSckDoHsKalr1fEtsIZGc9DOWd8xZF7gG6dqfLI5oJ WqMl2FNh6LHgetC4jE6BqRDJCR2gdbk= X-MC-Unique: 2zg7yAfPOSGUi95OP5rY3Q-1 X-Mimecast-MFC-AGG-ID: 2zg7yAfPOSGUi95OP5rY3Q_1779371451 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa Subject: [PULL 10/29] iotests: add a meson suite / make target per block I/O tests format Date: Thu, 21 May 2026 14:49:24 +0100 Message-ID: <20260521134943.1714527-11-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371633508154100 Currently each block format is classified as either 'quick', 'slow' or 'thorough' and this controls whether its I/O tests are added to the meson suites 'block-quick', 'block-slow' or 'block-thorough'. This suites are exposed the 'check-block' make target, accepting the optional SPEED variable. As we add more formats to the 'thorough' group, however, it becomes increasingly large and time consuming to run. What is needed is a make target that can exercise all tests for an individual format, regardless of speed classification. This makes use of the previous enhancement to mtest2make.py to introduce new meson suites 'block-$FORMAT-optional', which translate to new top level make targets 'check-block-$FORMAT'. These new targets always run all tests and as such do not need the SPEED variable to be set, but are not triggered by 'make check' or 'make check-block'. Reviewed-by: Kevin Wolf Reviewed-by: Pierrick Bouvier Signed-off-by: Daniel P. Berrang=C3=A9 --- tests/Makefile.include | 3 ++- tests/qemu-iotests/meson.build | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/Makefile.include b/tests/Makefile.include index f257288194..a820980bbe 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -14,7 +14,8 @@ check-help: @echo " $(MAKE) check-unit Run qobject tests" @echo " $(MAKE) check-qapi-schema Run QAPI schema tests" @echo " $(MAKE) check-tracetool Run tracetool generator tes= ts" - @echo " $(MAKE) check-block Run block tests" + @echo " $(MAKE) check-block Run block tests (all format= s)" + @echo " $(MAKE) check-block-FORMAT Run block tests (only for F= ORMAT)" ifneq ($(filter $(all-check-targets), check-softfloat),) @echo " $(MAKE) check-softfloat Run FPU emulation tests" @echo " $(MAKE) check-tcg Run TCG tests" diff --git a/tests/qemu-iotests/meson.build b/tests/qemu-iotests/meson.build index 1a24d801a3..16a5e39476 100644 --- a/tests/qemu-iotests/meson.build +++ b/tests/qemu-iotests/meson.build @@ -62,7 +62,8 @@ foreach format, speed: qemu_iotests_formats endforeach endif =20 - suites =3D [] + # Every format gets put in the format specific suite + suites =3D ['block-' + format + '-optional'] # Any format tagged quick or slow also gets added to slow # otherwise its tagged thorough if speed !=3D 'thorough' --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371629; cv=none; d=zohomail.com; s=zohoarc; b=ADIyu2OYv7fWS90mWcWViskZbEwxpMoMgdr8P3zokpS3lZx3qI4/xvmDZceKzgR5mH6TudZ3m7NVmOnHpcL1G5pdiXf1zduZ2hyAQqjgqFW+sldd+8aKPCIjEi332B2ci7NOCnmq/rhTqqHNPvSJ7QGdYNq0VDaz11M8MGjCajE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371629; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=81Xya2hYVglF9oHeEzHTGoXGBXch/bRuppaX98og99s=; b=ULui7jktSC5v1f/tHm5qEFH5oM6ekP0AwtwnWLS30IfliHp25n3pQphCH6LoJSdoeDavIsibCow+j/54vnP0frtB85WcstemRhKdNZfF6vrZ5JsLV3BJghaffumUWUk6R4W58NKGnF62VrZFVogNeP2U4NMhXdEXKMX3p3CIHbA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177937162905590.66679603490945; Thu, 21 May 2026 06:53:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3ns-000142-Rb; Thu, 21 May 2026 09:51:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nq-00010M-1h for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:10 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3no-00055r-7O for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:09 -0400 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-622-faioqw0fMv6d-rUkLy-EZQ-1; Thu, 21 May 2026 09:50:53 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 937E9195608A; Thu, 21 May 2026 13:50:45 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 608E01956053; Thu, 21 May 2026 13:50:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371467; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=81Xya2hYVglF9oHeEzHTGoXGBXch/bRuppaX98og99s=; b=Fzqqico/4CAQjLQOFWZVX8GvXbfO+9SSPMW2rdxrgvzfde0jDIn6ujFWgd/FHQNLyWF981 Xxv4LdKi9tU83IYCo5B4i114wlFEL1292XTAn19VRz7v8sDbpJHtFURml1lpM7PCrm2OBY ZuvdcktV+ZAfvLGN7CuBOkLlM7IBVRA= X-MC-Unique: faioqw0fMv6d-rUkLy-EZQ-1 X-Mimecast-MFC-AGG-ID: faioqw0fMv6d-rUkLy-EZQ_1779371452 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , Thomas Huth Subject: [PULL 11/29] docs/devel/testing: expand documentation for 'make check-block' Date: Thu, 21 May 2026 14:49:25 +0100 Message-ID: <20260521134943.1714527-12-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371670933158500 Explain in greater detail what 'check-block' will run for each format, and also document the new format specific targets. Reviewed-by: Kevin Wolf Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Daniel P. Berrang=C3=A9 --- docs/devel/testing/main.rst | 25 ++++++++++++++++++++++--- tests/qemu-iotests/meson.build | 2 ++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/docs/devel/testing/main.rst b/docs/devel/testing/main.rst index b01a374865..f691c624c1 100644 --- a/docs/devel/testing/main.rst +++ b/docs/devel/testing/main.rst @@ -236,9 +236,28 @@ same commit that alters the generator code. check-block ~~~~~~~~~~~ =20 -``make check-block`` runs a subset of the block layer iotests (the tests t= hat -are in the "auto" group). -See the "QEMU iotests" section below for more information. +There are a variety of ways to exercise the block layer I/O tests +via make targets. + +A default ``make check`` or ``make check-block`` command will exercise +the ``qcow2`` format, using the tests tagged into the ``auto`` group +only. + +These targets accept the ``SPEED`` variable to augment the set of tests +to run. A slightly more comprehensive test plan can be run by defining +``SPEED=3Dslow``, which enables all tests for the ``qcow2`` and ``raw`` +formats. The most comprehensive test plan can be run by defining +``SPEED=3Dthorough``, which enables all available tests for the formats +``parallels``, ``qcow2``, ``qed``, ``raw``, ``vdi``, ``vhdx``, +``vmdk``, and ``vpc``. + +Each of formats also has its own dedicated make target, named +``make check-block-$FORMAT`` which will run all available tests for +the designated format and does not require the ``SPEED`` variable +to be set. + +See the "QEMU iotests" section below for more information on the +block I/O test framework that is leveraged by these ``make`` targets. =20 .. _qemu-iotests: =20 diff --git a/tests/qemu-iotests/meson.build b/tests/qemu-iotests/meson.build index 16a5e39476..66b09d6b97 100644 --- a/tests/qemu-iotests/meson.build +++ b/tests/qemu-iotests/meson.build @@ -10,6 +10,8 @@ endif =20 qemu_iotests_binaries =3D [qemu_img, qemu_io, qemu_nbd, qsd] qemu_iotests_env =3D {'PYTHON': python.full_path()} +# If altering this definition, also update docs/devel/testing/main.rst +# section on 'check-block' targets to reflect the changes qemu_iotests_formats =3D { 'qcow2': 'quick', 'raw': 'slow', --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371681; cv=none; d=zohomail.com; s=zohoarc; b=hKN69BXTXThRIlNHHLFSLZ5P2Y8UgMfzEkpQb3A/JCqs26xSD4lqidBHNfSLGzJdN2Mz89LWpIdVJIHuFLv5DvYzlaOQs2CNDhpv3/pTpmprci8MTTa3/iDrgQTROV5ptloKKVfYRvlOtcScu5X7YsFP3gFLbQko5kvHB//FhRs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371681; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ra1kgjEHqlBV+HJzlKtlJ7lUkm2o1amu5l5BhHzmIxE=; b=MyHZn8/OMBU5awmVFoSWb59wOLEUKSaUd7n33dZ/Cca4j+OX6LOWiprZtEjJtRVsLwxJd1345y+oHC0f0HxjYZui8e0QNBTpdFoS2lejYCQzuBndbpOKd3XvfnU/76Tk8pN+/n/NFwHsFi8PZ3kCgtfMndxqyJalzRu+dDkhxbw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371681686448.4486074158975; Thu, 21 May 2026 06:54:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3ns-000140-PF; Thu, 21 May 2026 09:51:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nj-0000q5-QF for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:03 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3ng-00052g-Kb for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:01 -0400 Received: from mx-prod-mc-08.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-629-Pdu6LDx9O_yTqfkWk0vyzA-1; Thu, 21 May 2026 09:50:54 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C2D6518002D7; Thu, 21 May 2026 13:50:49 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 2D9CD1956053; Thu, 21 May 2026 13:50:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371460; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ra1kgjEHqlBV+HJzlKtlJ7lUkm2o1amu5l5BhHzmIxE=; b=fcV+AiuNxnqea3vaOyUF9rFwE4OrkDK0AddIl+fyIcf+4SKevSms6E9d5HmsmUi/UgbN1r YAJBaL1PAb1QI3PjVCvpuE8J40wj7RAIEz3QTbtGym+1ZKR2bwybghsZ/b8cLrITl+adew lDe8GIfSh9mGUHijw9SC1/jMmz1y1L8= X-MC-Unique: Pdu6LDx9O_yTqfkWk0vyzA-1 X-Mimecast-MFC-AGG-ID: Pdu6LDx9O_yTqfkWk0vyzA_1779371452 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa Subject: [PULL 12/29] iotests: add nbd and luks to the I/O test suites Date: Thu, 21 May 2026 14:49:26 +0100 Message-ID: <20260521134943.1714527-13-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371691661158500 This introduces new suites for running I/O tests on NBD and LUKS drivers, giving new make targets * make check-block-luks * make check-block-nbd as well as adding their tests to 'make check-block SPEED=3Dthorough' Reviewed-by: Kevin Wolf Reviewed-by: Pierrick Bouvier Signed-off-by: Daniel P. Berrang=C3=A9 --- docs/devel/testing/main.rst | 4 ++-- tests/qemu-iotests/meson.build | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/devel/testing/main.rst b/docs/devel/testing/main.rst index f691c624c1..843592e3e0 100644 --- a/docs/devel/testing/main.rst +++ b/docs/devel/testing/main.rst @@ -248,8 +248,8 @@ to run. A slightly more comprehensive test plan can be = run by defining ``SPEED=3Dslow``, which enables all tests for the ``qcow2`` and ``raw`` formats. The most comprehensive test plan can be run by defining ``SPEED=3Dthorough``, which enables all available tests for the formats -``parallels``, ``qcow2``, ``qed``, ``raw``, ``vdi``, ``vhdx``, -``vmdk``, and ``vpc``. +``luks``, ``nbd``, ``parallels``, ``qcow2``, ``qed``, ``raw``, ``vdi``, +``vhdx``, ``vmdk``, and ``vpc``. =20 Each of formats also has its own dedicated make target, named ``make check-block-$FORMAT`` which will run all available tests for diff --git a/tests/qemu-iotests/meson.build b/tests/qemu-iotests/meson.build index 66b09d6b97..744d0b6e88 100644 --- a/tests/qemu-iotests/meson.build +++ b/tests/qemu-iotests/meson.build @@ -15,12 +15,14 @@ qemu_iotests_env =3D {'PYTHON': python.full_path()} qemu_iotests_formats =3D { 'qcow2': 'quick', 'raw': 'slow', + 'luks': 'thorough', + 'nbd': 'thorough', 'parallels': 'thorough', 'qed': 'thorough', 'vdi': 'thorough', 'vhdx': 'thorough', 'vmdk': 'thorough', - 'vpc': 'thorough' + 'vpc': 'thorough', } =20 foreach k, v : emulators --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371517; cv=none; d=zohomail.com; s=zohoarc; b=UCQoovBrqti+uSPcWrR0ia+GeDz0DCLZPuYtVQdH/z1Kr8pP84GtsLlTQWINmJMa4LBN6hvYrv4Lw8U4DhrGPEI2XLf+ElMras5hPlkkU/otzYluHXHWpmXfnXKn88BvUIWohcvL9PWm0JLb05nKvJ9Yl7luioN0NQTmswow2vg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371517; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=sLUP+Qqi8lwekmHrpvHEeDIL4kMTGn1JTiOLLT00BOs=; b=ShmYZDO9OR9JPWzriPHw+cfgFY8A01QfNXmIl/qfJlii8E0E1bTUpJiLh/c5xNYWC3WmrCIU61OLZ3wtEqDSWgou3RTMVgGUUCJC1f7VdB+Z17ct6vUFpQ+95jtdjOlWbWl7Zho8yRrG6oD7GzrKUtEQBDXSSqIU4mmN5YDYoDA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371517555153.03173801996877; Thu, 21 May 2026 06:51:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3nu-00015n-T5; Thu, 21 May 2026 09:51:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nn-0000xA-Oy for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:07 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nl-00054d-EF for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:07 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-694-xYKsH9nkPA6GQsPL3YNueA-1; Thu, 21 May 2026 09:50:55 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 52B80195608F; Thu, 21 May 2026 13:50:54 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 450691955D71; Thu, 21 May 2026 13:50:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371464; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sLUP+Qqi8lwekmHrpvHEeDIL4kMTGn1JTiOLLT00BOs=; b=TYP9YdNM9yZDknSZX4mblkOZ3naZBG25zdUPW7k2usxOoe4a0+bluO+eN/EDeukesdQ/WX IRpieBjeus8RfBboUNjo5ecmvtx3EQi5KRszwLZ+rNwx95Cz7/G2wwSxuEbREmru03pWy4 unl5lthisQrDozsLVEdx/SP58VuEjGs= X-MC-Unique: xYKsH9nkPA6GQsPL3YNueA-1 X-Mimecast-MFC-AGG-ID: xYKsH9nkPA6GQsPL3YNueA_1779371454 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , Thomas Huth Subject: [PULL 13/29] iotests: use 'driver' as collective term for either format or protocol Date: Thu, 21 May 2026 14:49:27 +0100 Message-ID: <20260521134943.1714527-14-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371576165158500 The I/O tests integration previously exclusively tested block formats and now also covers the NBD protocol. Replace references to 'format' with 'driver', as a generic term to collectively apply to either a format or protocol. Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Daniel P. Berrang=C3=A9 --- docs/devel/testing/main.rst | 13 +++++++------ tests/Makefile.include | 4 ++-- tests/qemu-iotests/meson.build | 24 ++++++++++++------------ 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/docs/devel/testing/main.rst b/docs/devel/testing/main.rst index 843592e3e0..c0321d1d25 100644 --- a/docs/devel/testing/main.rst +++ b/docs/devel/testing/main.rst @@ -237,7 +237,8 @@ check-block ~~~~~~~~~~~ =20 There are a variety of ways to exercise the block layer I/O tests -via make targets. +via make targets for a selection of formats / protocols (collectively +referred to as ``drivers`` below). =20 A default ``make check`` or ``make check-block`` command will exercise the ``qcow2`` format, using the tests tagged into the ``auto`` group @@ -246,14 +247,14 @@ only. These targets accept the ``SPEED`` variable to augment the set of tests to run. A slightly more comprehensive test plan can be run by defining ``SPEED=3Dslow``, which enables all tests for the ``qcow2`` and ``raw`` -formats. The most comprehensive test plan can be run by defining -``SPEED=3Dthorough``, which enables all available tests for the formats +drivers. The most comprehensive test plan can be run by defining +``SPEED=3Dthorough``, which enables all available tests for the drivers ``luks``, ``nbd``, ``parallels``, ``qcow2``, ``qed``, ``raw``, ``vdi``, ``vhdx``, ``vmdk``, and ``vpc``. =20 -Each of formats also has its own dedicated make target, named -``make check-block-$FORMAT`` which will run all available tests for -the designated format and does not require the ``SPEED`` variable +Each of drivers also has its own dedicated make target, named +``make check-block-$DRIVER`` which will run all available tests for +the designated driver and does not require the ``SPEED`` variable to be set. =20 See the "QEMU iotests" section below for more information on the diff --git a/tests/Makefile.include b/tests/Makefile.include index a820980bbe..a063a1d60f 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -14,8 +14,8 @@ check-help: @echo " $(MAKE) check-unit Run qobject tests" @echo " $(MAKE) check-qapi-schema Run QAPI schema tests" @echo " $(MAKE) check-tracetool Run tracetool generator tes= ts" - @echo " $(MAKE) check-block Run block tests (all format= s)" - @echo " $(MAKE) check-block-FORMAT Run block tests (only for F= ORMAT)" + @echo " $(MAKE) check-block Run block tests (all format= s/protocols)" + @echo " $(MAKE) check-block-DRIVER Run block tests (only for f= ormat/protocol 'DRIVER')" ifneq ($(filter $(all-check-targets), check-softfloat),) @echo " $(MAKE) check-softfloat Run FPU emulation tests" @echo " $(MAKE) check-tcg Run TCG tests" diff --git a/tests/qemu-iotests/meson.build b/tests/qemu-iotests/meson.build index 744d0b6e88..bc6132a0f7 100644 --- a/tests/qemu-iotests/meson.build +++ b/tests/qemu-iotests/meson.build @@ -12,7 +12,7 @@ qemu_iotests_binaries =3D [qemu_img, qemu_io, qemu_nbd, q= sd] qemu_iotests_env =3D {'PYTHON': python.full_path()} # If altering this definition, also update docs/devel/testing/main.rst # section on 'check-block' targets to reflect the changes -qemu_iotests_formats =3D { +qemu_iotests_drivers =3D { 'qcow2': 'quick', 'raw': 'slow', 'luks': 'thorough', @@ -33,12 +33,12 @@ endforeach =20 qemu_iotests_check_cmd =3D files('check') =20 -foreach format, speed: qemu_iotests_formats - # Formats tagged 'quick' get the subset of tests in the 'auto' +foreach driver, speed: qemu_iotests_drivers + # Drivers tagged 'quick' get the subset of tests in the 'auto' # group, run by default with 'make check' / 'make check-block' seen =3D [] if speed =3D=3D 'quick' - args =3D ['-tap', '-' + format, '-g', 'auto'] + args =3D ['-tap', '-' + driver, '-g', 'auto'] suites =3D ['block'] =20 rc =3D run_command( @@ -49,13 +49,13 @@ foreach format, speed: qemu_iotests_formats foreach item: rc.stdout().strip().split() seen +=3D item args =3D [qemu_iotests_check_cmd, - '-tap', '-' + format, item, + '-tap', '-' + driver, item, '--source-dir', meson.current_source_dir(), '--build-dir', meson.current_build_dir()] # Some individual tests take as long as 45 seconds # Bump the timeout to 3 minutes for some headroom # on slow machines to minimize spurious failures - test('io-' + format + '-' + item, + test('io-' + driver + '-' + item, python, args: args, depends: qemu_iotests_binaries, @@ -66,9 +66,9 @@ foreach format, speed: qemu_iotests_formats endforeach endif =20 - # Every format gets put in the format specific suite - suites =3D ['block-' + format + '-optional'] - # Any format tagged quick or slow also gets added to slow + # Every driver gets put in the driver specific suite + suites =3D ['block-' + driver + '-optional'] + # Any driver tagged quick or slow also gets added to slow # otherwise its tagged thorough if speed !=3D 'thorough' suites +=3D ['block-slow'] @@ -76,7 +76,7 @@ foreach format, speed: qemu_iotests_formats suites +=3D ['block-thorough'] endif =20 - args =3D ['-tap', '-' + format] + args =3D ['-tap', '-' + driver] =20 rc =3D run_command( [python, qemu_iotests_check_cmd] + args + ['-n'], @@ -91,13 +91,13 @@ foreach format, speed: qemu_iotests_formats endif =20 args =3D [qemu_iotests_check_cmd, - '-tap', '-' + format, item, + '-tap', '-' + driver, item, '--source-dir', meson.current_source_dir(), '--build-dir', meson.current_build_dir()] # Some individual tests take as long as 45 seconds # Bump the timeout to 3 minutes for some headroom # on slow machines to minimize spurious failures - test('io-' + format + '-' + item, + test('io-' + driver + '-' + item, python, args: args, depends: qemu_iotests_binaries, --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371639; cv=none; d=zohomail.com; s=zohoarc; b=TYvDQ5JgRwNPEsKx1STSQFozuyvgwUK8KLkYQgchjImdx9h/yK1985cZug+9YajFkJ8/SG7/KGutwwWIJDuYFH6AysApMpwKxWn7Thaeu40TW6Jp8Iyzf90kzSvtsZSrMD/EdeR5GxD5/gSKJxpcxDcIn5O9kxth0EKDXOI4Q+A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371639; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=S1qpIroQyaGIbCB6MQky+U4C7yjILb1PZ8jYJABwVSg=; b=XPybpDyV0aj48eeF+2Gj/hW8lKqJP8yZXquusL7xfUdsfQu0QMD/zxE5UBmyp8vXIkCz1GqAMKeBcNTsdsmU4XsKKZQKTXk3rcIV/YovgSGwe6G2NQbpH9/eQe7wAfjSGrPstj4R2xbC53jHrnGm+4R7KjS5AP5YigZNTv1WR5A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371639410604.3105146266344; Thu, 21 May 2026 06:53:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3oH-0001KQ-B1; Thu, 21 May 2026 09:51:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3ny-00017a-3q for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:18 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nw-0005Qn-J3 for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:17 -0400 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-329-oziSrnSiMoaBsM1C3r4yNQ-1; Thu, 21 May 2026 09:51:00 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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 B7B431800637; Thu, 21 May 2026 13:50:58 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C59521956053; Thu, 21 May 2026 13:50:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371475; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=S1qpIroQyaGIbCB6MQky+U4C7yjILb1PZ8jYJABwVSg=; b=X1KlzQw7ctk937NEVmcVWw+NiXez3z2Sz/Q9qdJCAhkgUUjcRsMYLJPRorVZFuNh8OcljL tsG0iNCQ5F15l3+AVxDYXj6tM/wcBGfT1l/EQaQlMraot+krGHR5iK11DYYhPfUO20LVgd s7gDfNMPMV+iVUsUjsUaicCn7alc954= X-MC-Unique: oziSrnSiMoaBsM1C3r4yNQ-1 X-Mimecast-MFC-AGG-ID: oziSrnSiMoaBsM1C3r4yNQ_1779371459 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa Subject: [PULL 14/29] iotests: validate dmsetup result in test 128 Date: Thu, 21 May 2026 14:49:28 +0100 Message-ID: <20260521134943.1714527-15-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371642040154100 The I/O test 128 uses 'dmsetup create' to create a device, optionally using sudo to elevate privileges. This dmsetup command works in GitLab CI, however, the test then fails with a missing device name: 1..1 # running raw 128 not ok raw 128 ----------------------------------- stderr ------------------------------= ----- --- /builds/berrange/qemu/tests/qemu-iotests/128.out +++ /builds/berrange/qemu/build/scratch/raw-file-128/128.out.bad @@ -1,5 +1,5 @@ QA output created by 128 =3D=3D reading from error device =3D=3D -read failed: Input/output error +qemu-io: can't open device /dev/mapper/eiodev16546: Could not open '/dev= /mapper/eiodev16546': No such file or directory *** done (test program exited with status code 1) It is believed that this is due to the build env using a manually populated /dev, such that the device mapper node won't ever appear. It is not a race, since a test adding a sleep did not result in the device appearing. Reviewed-by: Kevin Wolf Reviewed-by: Pierrick Bouvier Signed-off-by: Daniel P. Berrang=C3=A9 --- tests/qemu-iotests/128 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/qemu-iotests/128 b/tests/qemu-iotests/128 index d0e00d24b1..d75b1a451a 100755 --- a/tests/qemu-iotests/128 +++ b/tests/qemu-iotests/128 @@ -42,6 +42,12 @@ _setup_eiodev() echo "0 $((1024 * 1024 * 1024 / 512)) error" | \ $cmd dmsetup create "$devname" 2>/dev/null if [ "$?" -eq 0 ]; then + DEV=3D"/dev/mapper/$devname" + if ! -e $DEV + then + _notrun "Device $DEV not appearing" + fi + sudo=3D"$cmd" return fi --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371501; cv=none; d=zohomail.com; s=zohoarc; b=RhoWr3CUW4rnlVIkpSweTrxtYLB6fKXAWZdq7cPTgDrXJPrcNdZMlAgmdlrQneW6kzJASQtyv4EYA2vZoP4dAUR4CsbtCzUMUvow0nRk+OVgIPJUoEofW6xqVj6stgjsF6uv7py59YymJ1Au1oZxAi3sqMt2n9Kh6nR0E7kDGFM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371501; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rC1gQ4KCww6UmwMM2Hg5rZTpCm9TVmnOV9UbYZ7eups=; b=XFLKxeVvlbh2nL0MMLTwTz4v2Fd/tYvv7SBS967lg5u2b1PWkjPmc8apqF4vPKPryupBeuMQlq0qkKUNuE/YpYc2yx1f8LUDDLmaQOHEqY9ctLJM6yu5FrNjkwQfkU6zXnf+wfLH9HxFp/qXrSz4MKt3hfLoAU0i1oE94w67EBY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371501516635.5039758555697; Thu, 21 May 2026 06:51:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3nx-00016r-Mx; Thu, 21 May 2026 09:51:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nt-00014V-AG for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:13 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nr-00058T-4u for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:13 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-358-y3fFMxGTP1ec2sqUAgp2Gw-1; Thu, 21 May 2026 09:51:07 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id B8D2D19560BA; Thu, 21 May 2026 13:51:03 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 329751955F19; Thu, 21 May 2026 13:50:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371470; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=rC1gQ4KCww6UmwMM2Hg5rZTpCm9TVmnOV9UbYZ7eups=; b=dtN0+SC6ROcgoUslK0JfTvbhHdfb/7Ylf1dOfTSFWlGW1HH9iqWGRlKY5kxB/XvbSbhYzd C+CrdMiARN6ewpIfiq5+CnfQiRZvg8Pk0XcJpzM8w1fDUM8Kb5KUjCcYsG7NcnWqrfSEEH 5I+Vw+xhYamOd+L+poQjwhxPBOHFh90= X-MC-Unique: y3fFMxGTP1ec2sqUAgp2Gw-1 X-Mimecast-MFC-AGG-ID: y3fFMxGTP1ec2sqUAgp2Gw_1779371463 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , Thomas Huth Subject: [PULL 15/29] iotests: fix check for sudo access in LUKS I/O test Date: Thu, 21 May 2026 14:49:29 +0100 Message-ID: <20260521134943.1714527-16-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371513517158500 The test did not cope with the possibility that 'sudo' was not installed at all, merely that it was not configured. This broke tests in any CI env which lacks 'sudo'. Reviewed-by: Kevin Wolf Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Daniel P. Berrang=C3=A9 --- tests/qemu-iotests/149 | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tests/qemu-iotests/149 b/tests/qemu-iotests/149 index c13343d7ef..6dff39a28a 100755 --- a/tests/qemu-iotests/149 +++ b/tests/qemu-iotests/149 @@ -95,11 +95,14 @@ def verify_passwordless_sudo(): =20 args =3D ["sudo", "-n", "/bin/true"] =20 - proc =3D subprocess.Popen(args, - stdin=3Dsubprocess.PIPE, - stdout=3Dsubprocess.PIPE, - stderr=3Dsubprocess.STDOUT, - universal_newlines=3DTrue) + try: + proc =3D subprocess.Popen(args, + stdin=3Dsubprocess.PIPE, + stdout=3Dsubprocess.PIPE, + stderr=3Dsubprocess.STDOUT, + universal_newlines=3DTrue) + except FileNotFoundError as e: + iotests.notrun('requires sudo binary: %s' % e) =20 msg =3D proc.communicate()[0] =20 --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371681; cv=none; d=zohomail.com; s=zohoarc; b=fDbhVkvLPKUFthVX5LnF4onu6U+URxxTGHaRxJmR0spjOl1ei9W5GKZRJ5exPTqJN7qowdOgIChyu5yMtsKPmHOqGoco8ZiD8zGyyjbVtLxqxm8BGpZnobpakfeeQho6DhFrf19+vHT8RfQCR0I/xkq8kXHEtkp0YvSUg8uWRm4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371681; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6hh6vNFU4mb69vK9rw83JMfqECqtzobaB1xx4DG/LzU=; b=RRvTN7SaBswLTDGyaCpAKXVkRZu2oUyTqKS3sZefKoodg+VG2mgsmf6z0QU1UQczoW06O4ShtDCkhVOQiM0nZanOqP51Rxfs8MdFO4dCw/qGIWmgtWMcY4JNcdb9cJxeYPmeNuDKwJrxPyaLzcESQeTodKufV3oyMJQeT5bospM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177937168159037.1737547339103; Thu, 21 May 2026 06:54:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3oJ-0001PK-0h; Thu, 21 May 2026 09:51:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nw-00016i-67 for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:16 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nt-0005Hf-Su for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:15 -0400 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-427-MPSuKJr1PeKNSns1M7gpFQ-1; Thu, 21 May 2026 09:51:09 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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 82D9518005B2; Thu, 21 May 2026 13:51:08 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 47FD61956053; Thu, 21 May 2026 13:51:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371473; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6hh6vNFU4mb69vK9rw83JMfqECqtzobaB1xx4DG/LzU=; b=D2bAxXIq+yAA936LLWJpIFoWu9w1bBCQwfrXtGB4amMzugDwMljGPJFwaxfMdxmxMq3X8g GimGczfgWiRLfycg79wkzk63i4fVbZDpsGMzsf37zwTJa8MDB4LFjd8thHlU7JucElskrG f2z4B9krshp8vbxrsCKEwCu+cyodkSo= X-MC-Unique: MPSuKJr1PeKNSns1M7gpFQ-1 X-Mimecast-MFC-AGG-ID: MPSuKJr1PeKNSns1M7gpFQ_1779371468 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , Thomas Huth Subject: [PULL 16/29] iotests: mark 151, 181, 185 & 308 as flaky tests Date: Thu, 21 May 2026 14:49:30 +0100 Message-ID: <20260521134943.1714527-17-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371691897158500 Introduce a "_flaky_test" function for shell based I/O tests which accepts a GitLab issue URL, and causes the I/O test to be skipped unless the $QEMU_TEST_FLAKY_TESTS environment variable is set. The equivalent "skip_flaky" test decorator is added for python based I/O tests with the same behaviour. This is used by: * Test 151 which fails in QEMU private AWS runners due to failure to make progress in time * Test 181 which fails with a non-responsive QEMU on AWS runners with the QED format * Test 185 which fails in GitLab shared runners * Test 308 which fails to see disk usage increase after fallocate Reviewed-by: Thomas Huth Signed-off-by: Daniel P. Berrang=C3=A9 --- tests/qemu-iotests/151 | 1 + tests/qemu-iotests/181 | 2 ++ tests/qemu-iotests/185 | 1 + tests/qemu-iotests/308 | 2 ++ tests/qemu-iotests/common.rc | 16 ++++++++++++++++ tests/qemu-iotests/iotests.py | 16 ++++++++++++++++ 6 files changed, 38 insertions(+) diff --git a/tests/qemu-iotests/151 b/tests/qemu-iotests/151 index 9b9c815db5..647194094a 100755 --- a/tests/qemu-iotests/151 +++ b/tests/qemu-iotests/151 @@ -308,6 +308,7 @@ class TestThrottledWithNbdExportBase(iotests.QMPTestCas= e): class TestLowThrottledWithNbdExport(TestThrottledWithNbdExportBase): iops =3D 16 =20 + @iotests.skip_flaky("https://gitlab.com/qemu-project/qemu/-/work_items= /3513") def testUnderLoad(self): ''' Throttle the source node, then issue a whole bunch of external req= uests diff --git a/tests/qemu-iotests/181 b/tests/qemu-iotests/181 index dc90a10757..b904e8ce01 100755 --- a/tests/qemu-iotests/181 +++ b/tests/qemu-iotests/181 @@ -48,6 +48,8 @@ _unsupported_fmt qcow vdi vhdx vmdk vpc vvfat parallels _supported_proto generic _supported_os Linux =20 +_flaky_test https://gitlab.com/qemu-project/qemu/-/work_items/3515 + size=3D64M _make_test_img $size =20 diff --git a/tests/qemu-iotests/185 b/tests/qemu-iotests/185 index 17489fb91c..a62ae8d329 100755 --- a/tests/qemu-iotests/185 +++ b/tests/qemu-iotests/185 @@ -50,6 +50,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15 _supported_fmt qcow2 _supported_proto file _supported_os Linux +_flaky_test https://gitlab.com/qemu-project/qemu/-/issues/3270 =20 size=3D$((64 * 1048576)) TEST_IMG=3D"${TEST_IMG}.base" _make_test_img $size diff --git a/tests/qemu-iotests/308 b/tests/qemu-iotests/308 index f4a06a522e..a2290825f4 100755 --- a/tests/qemu-iotests/308 +++ b/tests/qemu-iotests/308 @@ -53,6 +53,8 @@ _supported_proto file # We create the FUSE export manually _supported_os Linux # We need /dev/urandom _require_disk_usage =20 +_flaky_test https://gitlab.com/qemu-project/qemu/-/work_items/3514 + # $1: Export ID # $2: Options (beyond the node-name and ID) # $3: Expected return value (defaults to 'return') diff --git a/tests/qemu-iotests/common.rc b/tests/qemu-iotests/common.rc index 731e4b2b99..298bc483e0 100644 --- a/tests/qemu-iotests/common.rc +++ b/tests/qemu-iotests/common.rc @@ -1088,5 +1088,21 @@ _qcow2_dump_header() fi } =20 +# This must be referenced after any _require_ lines, so that +# test filtering happens first +_flaky_test() +{ + if test -z "$1" + then + echo "A GitLab issue URL must be provided for a flaky test" + exit 1 + fi + + if test -z "$QEMU_TEST_FLAKY_TESTS" + then + _notrun "Test is flaky (see $1) and \$QEMU_TEST_FLAKY_TESTS is not set" + fi +} + # make sure this script returns success true diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index 05274772ce..072be80e07 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -1603,6 +1603,22 @@ def func_wrapper(*args, **kwargs): return func(*args, **kwargs) return func_wrapper =20 +def skip_flaky(bugurl): + '''Skip Test Decorator + Always skips test due to unreliable design. + Requires a bug report URL for historical record.''' + def skip_test_decorator(func): + def func_wrapper(*args, **kwargs): + if os.environ.get("QEMU_TEST_FLAKY_TESTS", None) is None: + case_notrun( + ('{}: test is flaky (see {}) and $QEMU_TEST_FLAKY_TEST= S ' + + 'is not set').format(args[0], bugurl)) + return None + else: + return func(*args, **kwargs) + return func_wrapper + return skip_test_decorator + # We need to filter out the time taken from the output so that # qemu-iotest can reliably diff the results against master output, # and hide skipped tests from the reference output. --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371658; cv=none; d=zohomail.com; s=zohoarc; b=FEJNl7uwlvrDEjUUoGW05d7H+aBEpn0arqCY/MX8AhJLUyiRk5yOEFqfi3dnO5FmGEcfiCXrCooq1qAu54b7XkecO5zSuixBo1s31bohpcjH3WFMH6hT+DvtIixVa7CpyIYYdT5cvUwE7KCCrHZybSNoa3Q11C4vOF/HH3nMVgU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371658; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7WmkbRyCOvc8KhMxUJJu07mhxWy5DTBCisJMQWdsY70=; b=QY71ZcI/1tHl2o1Z5UD2UakLTi9ehoQ8g/sGN5zzy1zm8EGWdE7MBRe3ipK8OLakIMFt1Po2jjhLvR9ZeFK8pnKoc+bsetO5EjcGywTRGDtHM+CNmSmR4y4VL7IfZ0uwl8M3XVTgnxQ0jV0Rruqiml20zoZi/I+qH3NDEqnLGaQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371658301141.93979736243546; Thu, 21 May 2026 06:54:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3oJ-0001VH-Nl; Thu, 21 May 2026 09:51:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nz-00018V-Q2 for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:29 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3nx-0005Vy-LB for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:19 -0400 Received: from mx-prod-mc-08.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-536-Du3_1lIuPY6jGYtjcbVO3A-1; Thu, 21 May 2026 09:51:14 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id CC32118002C7; Thu, 21 May 2026 13:51:12 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 0EF8B1956053; Thu, 21 May 2026 13:51:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371477; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7WmkbRyCOvc8KhMxUJJu07mhxWy5DTBCisJMQWdsY70=; b=RbrcMb2F+3Z6TvDUQie6l7IL0yWNYONNqjTqSoEl0QjQ0s68lkcxrGhQe23JTA1Nh6R14x 0Oc5R5wsOBUvJim1nWwENRnl4O+9CdW1EGO3ik/gfvVXrkicopPOJFLcQID7y6A9489otP 0xsY/XKfR1nl+j+/DaQ/1X3Z0EDHNHI= X-MC-Unique: Du3_1lIuPY6jGYtjcbVO3A-1 X-Mimecast-MFC-AGG-ID: Du3_1lIuPY6jGYtjcbVO3A_1779371472 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa Subject: [PULL 17/29] gitlab: add jobs for thorough block tests Date: Thu, 21 May 2026 14:49:31 +0100 Message-ID: <20260521134943.1714527-18-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371682649158500 CI is only exercising the qcow2 'auto' tests currently. As a result we get no exposure of changes which cause regressions in other block format drivers. This adds new CI jobs for each block format, that will run the target 'make check-block-$FORMAT'. The jobs are separate so that we have the ability to make each format gating or not, depending on their level of reliability. The 'centos' image is used to run the I/O tests since several tests have an implicit dependency on x86_64-softmmu, and thus break with other architecture targets. The 'centos' build job is the only one that creates the x86_64-softmmu target in CI. Ideally this target portability in I/O tests would be fixed to avoid this limitation. Acked-by: Kevin Wolf Reviewed-by: Pierrick Bouvier Signed-off-by: Daniel P. Berrang=C3=A9 --- .gitlab-ci.d/buildtest.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index 4b1949a3a5..cf0281ecd6 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -174,6 +174,24 @@ build-system-centos: x86_64-softmmu rx-softmmu sh4-softmmu MAKE_CHECK_ARGS: check-build =20 + +# NB: block-XXX jobs use 'centos' since that is the build +# job that provides the x86_64-softmmu. Some I/O tests +# are currently buggy and blindly assume characteristics +# of x86 (such as PCIe) causing failures with other arches + +block: + extends: .native_test_job_template + needs: + - job: build-system-centos + artifacts: true + variables: + IMAGE: centos9 + MAKE_CHECK_ARGS: "check-block-$FORMAT" + parallel: + matrix: + - FORMAT: [luks, nbd, parallels, qcow2, qed, raw, vdi, vhdx, vmdk, v= pc] + # Previous QEMU release. Used for cross-version migration tests. build-previous-qemu: extends: .native_build_job_template --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371647; cv=none; d=zohomail.com; s=zohoarc; b=b3urbu7PChvH5bjv3HhMniKe2X5XwrI7tWK43DZ6u+aCcE07LdJs6w0MLn72wySDD7pQzSGiL1FoEWxtK7znXGERviX6cBcHo1NFFZJHtv5Lcza52cjjgN/gJ7FpdjPhF/EQwTz0crxSM4232Ae9ehoVq0TWtrOYsXHqe08eoL8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371647; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=SehIcGL5+cgE4/kfJH/adrcIXagz7Lnlktp3htwqCmA=; b=ZxcOMcUswJPipgGOPDkhTSKl+yxDOc+PUVZazuL17yNaP8DerKGTt6obBiHX83linay7DIXTCBsYXSHjoJYlBHwfX/SwODFDI+v5TeYDKTQa7cQgoStjc7c4XMxrtHHONnkoyScxkW/e2+N3El14b69RjD6VNwS44pNFL5h1xqs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371647567901.5838255411278; Thu, 21 May 2026 06:54:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3oJ-0001TW-H7; Thu, 21 May 2026 09:51:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3oB-0001Ft-0B for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3o8-000643-Qq for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:29 -0400 Received: from mx-prod-mc-08.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-638-rvz1NFbtM5ye7fDHV18V9g-1; Thu, 21 May 2026 09:51:18 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 6E312180058B; Thu, 21 May 2026 13:51:17 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4ECCD1956053; Thu, 21 May 2026 13:51:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371487; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=SehIcGL5+cgE4/kfJH/adrcIXagz7Lnlktp3htwqCmA=; b=DF3w/E/89x6mA9+vIrYMJoA3lw7Irc0aihC3prs5wTDT1kEl01O4hrcLnJvM3peKDQRisV Ch2DEGEdZICTAsSZcRUoVyGFEiagm5R111Kwayft6rpUk6HAwA3rLadlyf/ON3JHInS99J S989JMNw0ag24Z88Pofac7KWJuYYm80= X-MC-Unique: rvz1NFbtM5ye7fDHV18V9g-1 X-Mimecast-MFC-AGG-ID: rvz1NFbtM5ye7fDHV18V9g_1779371477 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , Thomas Huth Subject: [PULL 18/29] gitlab: remove I/O tests from build-tcg-disabled job Date: Thu, 21 May 2026 14:49:32 +0100 Message-ID: <20260521134943.1714527-19-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371681184158500 Now that we have dedicated CI jobs for running I/O tests on each supported format/protocol, we no longer need to special case a run of a hand picked set of tests in the build-tcg-disabled job. Acked-by: Kevin Wolf Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Daniel P. Berrang=C3=A9 --- .gitlab-ci.d/buildtest.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index cf0281ecd6..d054349030 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -366,15 +366,6 @@ build-tcg-disabled: - make -j"$JOBS" - make check-unit - make check-qapi-schema - - ./run tests/qemu-iotests/check -raw 001 002 003 004 005 008 009 - 010 011 012 021 025 032 033 048 052 063 077 086 101 104 106 - 113 148 150 151 152 157 159 160 163 170 171 184 192 194 208 - 221 226 227 236 253 277 image-fleecing - - ./run tests/qemu-iotests/check -qcow2 028 051 056 057 058 065 068 - 082 085 091 095 096 102 122 124 132 139 142 144 145 151 152 - 155 157 165 194 196 200 202 208 209 216 218 227 234 246 247 - 248 250 254 255 257 258 260 261 262 263 264 270 272 273 277 - 279 image-fleecing - make distclean =20 build-user: --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371793; cv=none; d=zohomail.com; s=zohoarc; b=Zf6Fm4jWpf5+YEtJZ2FRehcB0ZgInAkNA8x4zEq4PE7xQ1ZuviCqdzP5OypzUx+97BeIMsmq40xfWJbLkPV8sKTaS3RG8aW0Z/X6/bl0z3B41Qc0hCJDaeAdhRBPzB2eKkJLw46mwivIdwcPRnU0m+ZT019G4gQiEBEMj9DHRtY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371793; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7C2Z2x5rN4Ack7PYt2FC2o/xoovv41BQKNbjaIQCsWI=; b=j3M57Y0IZCjkQtU5yTc7BfI3R64ZP4cKXbFSIMvBq78rJLp7w1yhQ9j8uEd1JiIVC1MDkUWhwZIutAyBem5Bep5NKqP04O7LQ+Q8CEXMZE7dOpkw7dppchULQDZCyz8pmQ2LrPsUwHcIVwJBDgy4j59L0AHkNELWoSlF/Frvu0o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371793430205.1145072362932; Thu, 21 May 2026 06:56:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3oK-0001am-Oo; Thu, 21 May 2026 09:51:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3oC-0001G0-Kf for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3o9-00065w-QU for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:32 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-371-hrm-5nS7O4OFkk2soWs8lA-1; Thu, 21 May 2026 09:51:25 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id AEA7B1955F18; Thu, 21 May 2026 13:51:22 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id DCFDC1956053; Thu, 21 May 2026 13:51:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371488; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7C2Z2x5rN4Ack7PYt2FC2o/xoovv41BQKNbjaIQCsWI=; b=KxIf+It2+3vwZt3y+KGbUq7BgrmZqfGn8Q+GCKY17bgHWwBmTU6Cr0DmBDBgqdcCv84loJ QB+pC6oQiJlTaxTUWEMDIbKFijtJzCyJvEez/nr7xNDryypH4N7zojSziP2eGqPDIHbWjk yM3IWCQQ82oGHzQHNbiVZxH2OW4QkvE= X-MC-Unique: hrm-5nS7O4OFkk2soWs8lA-1 X-Mimecast-MFC-AGG-ID: hrm-5nS7O4OFkk2soWs8lA_1779371482 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 19/29] qom: add trace events for object/property lifecycle Date: Thu, 21 May 2026 14:49:33 +0100 Message-ID: <20260521134943.1714527-20-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371852025158500 This adds tracing around object allocation & finalization, the addition & deletion of properties, and the addition & deletion of children. Tested-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Daniel P. Berrang=C3=A9 --- qom/object.c | 34 +++++++++++++++++++++++++++------- qom/trace-events | 12 ++++++++++-- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/qom/object.c b/qom/object.c index dfdc5c8e42..4a15151c3b 100644 --- a/qom/object.c +++ b/qom/object.c @@ -594,6 +594,8 @@ static void object_property_del_all(Object *obj) object_property_iter_init(&iter, obj); while ((prop =3D object_property_iter_next(&iter)) !=3D NULL) { if (g_hash_table_add(done, prop)) { + trace_object_property_del(obj, obj->class->type->name, + prop->name, prop->opaque); if (prop->release) { prop->release(obj, prop->name, prop->opaque); released =3D true; @@ -612,10 +614,14 @@ static void object_property_del_child(Object *obj, Ob= ject *child) GHashTableIter iter; gpointer key, value; =20 + trace_object_property_del_child(obj, obj->class->type->name, + child, child->class->type->name); g_hash_table_iter_init(&iter, obj->properties); while (g_hash_table_iter_next(&iter, &key, &value)) { prop =3D value; if (object_property_is_child(prop) && prop->opaque =3D=3D child) { + trace_object_property_del(obj, obj->class->type->name, + prop->name, prop->opaque); if (prop->release) { prop->release(obj, prop->name, prop->opaque); prop->release =3D NULL; @@ -655,7 +661,7 @@ static void object_finalize(void *data) { Object *obj =3D data; TypeImpl *ti =3D obj->class->type; - + trace_object_finalize(obj, obj->class->type->name); object_property_del_all(obj); object_deinit(obj, ti); =20 @@ -705,6 +711,7 @@ static Object *object_new_with_type(Type type) object_initialize_with_type(obj, size, type); obj->free =3D obj_free; =20 + trace_object_new(obj, obj->class->type->name); return obj; } =20 @@ -835,8 +842,9 @@ Object *object_dynamic_cast(Object *obj, const char *ty= pename) Object *object_dynamic_cast_assert(Object *obj, const char *typename, const char *file, int line, const char = *func) { - trace_object_dynamic_cast_assert(obj ? obj->class->type->name : "(null= )", - typename, file, line, func); + trace_object_dynamic_cast_assert( + obj, obj ? obj->class->type->name : "(null)", + typename, file, line, func); =20 #ifdef CONFIG_QOM_CAST_DEBUG int i; @@ -926,8 +934,9 @@ ObjectClass *object_class_dynamic_cast_assert(ObjectCla= ss *class, { ObjectClass *ret; =20 - trace_object_class_dynamic_cast_assert(class ? class->type->name : "(n= ull)", - typename, file, line, func); + trace_object_class_dynamic_cast_assert( + class ? class->type->name : "(null)", + typename, file, line, func); =20 #ifdef CONFIG_QOM_CAST_DEBUG int i; @@ -1211,6 +1220,8 @@ object_property_try_add(Object *obj, const char *name= , const char *type, prop->release =3D release; prop->opaque =3D opaque; =20 + trace_object_property_add(obj, obj->class->type->name, + prop->name, prop->opaque); g_hash_table_insert(obj->properties, prop->name, prop); return prop; } @@ -1249,6 +1260,8 @@ object_class_property_add(ObjectClass *klass, prop->release =3D release; prop->opaque =3D opaque; =20 + trace_object_class_property_add(klass->type->name, prop->name, + prop->opaque); g_hash_table_insert(klass->properties, prop->name, prop); =20 return prop; @@ -1337,6 +1350,8 @@ void object_property_del(Object *obj, const char *nam= e) { ObjectProperty *prop =3D g_hash_table_lookup(obj->properties, name); =20 + trace_object_property_del(obj, obj->class->type->name, prop->name, + prop->opaque); if (prop->release) { prop->release(obj, name, prop->opaque); } @@ -1625,8 +1640,11 @@ int object_property_get_enum(Object *obj, const char= *name, bool object_property_parse(Object *obj, const char *name, const char *string, Error **errp) { - Visitor *v =3D string_input_visitor_new(string); - bool ok =3D object_property_set(obj, name, v, errp); + Visitor *v; + bool ok; + trace_object_property_parse(obj, obj->class->type->name, name, string); + v =3D string_input_visitor_new(string); + ok =3D object_property_set(obj, name, v, errp); =20 visit_free(v); return ok; @@ -1757,6 +1775,8 @@ object_property_try_add_child(Object *obj, const char= *name, g_autofree char *type =3D NULL; ObjectProperty *op; =20 + trace_object_property_add_child(obj, obj->class->type->name, name, + child, child->class->type->name); assert(!child->parent); =20 type =3D g_strdup_printf("child<%s>", object_get_typename(child)); diff --git a/qom/trace-events b/qom/trace-events index b2e9f4a712..44c63e72af 100644 --- a/qom/trace-events +++ b/qom/trace-events @@ -1,5 +1,13 @@ # See docs/devel/tracing.rst for syntax documentation. =20 # object.c -object_dynamic_cast_assert(const char *type, const char *target, const cha= r *file, int line, const char *func) "%s->%s (%s:%d:%s)" -object_class_dynamic_cast_assert(const char *type, const char *target, con= st char *file, int line, const char *func) "%s->%s (%s:%d:%s)" +object_dynamic_cast_assert(void *obj, const char *type, const char *target= , const char *file, int line, const char *func) "obj=3D%p type=3D%s->%s (%s= :%d:%s)" +object_finalize(void *obj, const char *type) "obj=3D%p type=3D%s" +object_new(void *obj, const char *type) "obj=3D%p type=3D%s" +object_property_add(void *obj, const char *type, const char *name, void *v= alue) "obj=3D%p type=3D%s name=3D%s value=3D%p" +object_property_add_child(void *obj, const char *type, const char *name, v= oid *child, const char *childtype) "obj=3D%p type=3D%s name=3D%s child=3D%p= child-type=3D%s" +object_property_del(void *obj, const char *type, const char *name, void *v= alue) "obj=3D%p type=3D%s name=3D%s value=3D%p" +object_property_del_child(void *obj, const char *type, void *child, const = char *childtype) "obj=3D%p type=3D%s child=3D%p child-type=3D%s" +object_property_parse(void *obj, const char *type, const char *name, const= char *value) "obj=3D%p type=3D%s prop=3D%s value=3D%s" +object_class_dynamic_cast_assert(const char *type, const char *target, con= st char *file, int line, const char *func) "type=3D%s->%s (%s:%d:%s)" +object_class_property_add(const char *type, const char *name, void *value)= "type=3D%s name=3D%s value=3D%p" --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371654; cv=none; d=zohomail.com; s=zohoarc; b=bks7elSw2sBsmRiZHqH8V0EANXIFr4NyHXEP+2fgJ16lBPdnd0qgM0Lmg6M8qFnTLhj0RlbegmsF8c6IcHDIOhQSleJxCzrBZJVplEc9gH5Bk6BWHcH+Zbr9mTZVcVOIZjCSuzlPymqq6QJpKHWwiWPfmdAfiL+fX2UTHhJrnpc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371654; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YRAaGS5MpUdrCe/t5DJ6CS1ipgHcSW4Ebmlp5su3ShA=; b=YeDH8NiwuENkeB+nGMc1xqOaT38VNyDwXlLh7lDuZKYWMP/b/l9fbq2bwaXdDaXu9PsE5iICUdEYjBvSdnT9gqozykHx8nM762l8bLx+rarBC4GSHTJGFO+ItC6lOAwkFe9vGfKzO2mhVvQja1s+csJWR/+K4jfHhTFanyTZjCY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177937165499028.469301715062443; Thu, 21 May 2026 06:54:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3oP-0001mh-9O; Thu, 21 May 2026 09:51:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3oL-0001eH-Ce for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:41 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3oJ-0006M4-Uo for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:41 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-37-2Jt7gSMJNbOhvtI3jNmo6g-1; Thu, 21 May 2026 09:51:28 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 6E01D19560A1; Thu, 21 May 2026 13:51:27 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 2AB8A1956053; Thu, 21 May 2026 13:51:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371499; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=YRAaGS5MpUdrCe/t5DJ6CS1ipgHcSW4Ebmlp5su3ShA=; b=hnVp6e9iw0ox6OVomDcLG9N4u06gGcga3Ku0J5XHy2wwwkaFFKauOKwmSsldiJC4b0ZAqz smbe9rQKfE518eosXBVztcYsVCUdEPu+DGhoOt4Y47d3ZZ8UqHh32+DKrrGIWUWu7Oyn9J 1ejPphnRr3huKknoGieC3X5NDikcjbo= X-MC-Unique: 2Jt7gSMJNbOhvtI3jNmo6g-1 X-Mimecast-MFC-AGG-ID: 2Jt7gSMJNbOhvtI3jNmo6g_1779371487 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , Mark Cave-Ayland Subject: [PULL 20/29] hw/vfio-user: use a valid object ID for iothread Date: Thu, 21 May 2026 14:49:34 +0100 Message-ID: <20260521134943.1714527-21-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371656103154100 The objectg_new_with_propv/props methods failed to validate that the QOM "id" was well formed. This allowed the vfio-user code to use an invalid ID of "VFIO user" (space is not permitted) in its internal code. Reviewed-by: C=C3=A9dric Le Goater Reviewed-by: Mark Cave-Ayland Signed-off-by: Daniel P. Berrang=C3=A9 --- hw/vfio-user/proxy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/vfio-user/proxy.c b/hw/vfio-user/proxy.c index 8b7cc36231..e02a45e997 100644 --- a/hw/vfio-user/proxy.c +++ b/hw/vfio-user/proxy.c @@ -933,7 +933,7 @@ VFIOUserProxy *vfio_user_connect_dev(SocketAddress *add= r, Error **errp) qemu_cond_init(&proxy->close_cv); =20 if (vfio_user_iothread =3D=3D NULL) { - vfio_user_iothread =3D iothread_create("VFIO user", errp); + vfio_user_iothread =3D iothread_create("vfio-user", errp); } =20 proxy->ctx =3D iothread_get_aio_context(vfio_user_iothread); --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371745; cv=none; d=zohomail.com; s=zohoarc; b=LBAnSnOwenhKTgh5tJPqgHp9C4kmJN7iipC3mp4/InPp3Djubwf/J69M8mDL96hVopn0BbpxuVbR394jiLkoQqpYxEqCLbDA9A+jDpWbJ/epyz4aMm6vfTUsnXu8eoyo5ndOhS2vbietyyCQowk3KY3xc2PUzMm4lpSG4cvG1/g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371745; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=06hBjHCkindiUg1iDsa8qCRUsxP4CgOpUMReR198Kvw=; b=OMykxosxzdIDApWaWMsM76BfDFc732UFJEKbN6+qcLEJ0BYUlkHX3ssdhcOjvp0/+sRGagBhKRB3zw2yF23ki7+CiCUcry/dpP3TjkxZpq+Dt4HlRNyRsgzINdNleDho5y1DWz1IFmNLehL5Yz2Cihn5JRpHT+3etu2j6syHNz8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371745220571.052783842979; Thu, 21 May 2026 06:55:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3oN-0001iR-05; Thu, 21 May 2026 09:51:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3oJ-0001VP-LS for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:39 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3oH-0006If-RL for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:39 -0400 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-592-zPCunkD4NpqVkKvUSIXsyQ-1; Thu, 21 May 2026 09:51:33 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 46BA419560B2; Thu, 21 May 2026 13:51:32 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id DEDD81956053; Thu, 21 May 2026 13:51:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371496; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=06hBjHCkindiUg1iDsa8qCRUsxP4CgOpUMReR198Kvw=; b=OMkIUq0y438+X4ZiNXGhkwY/gcVFWdt87sNpVWCNjMQyglHejwEHusi+qU/tJCu1f2sEiX Wlby0An7+WCsZyV2V9tLb88MccTSzg8P4B6SGYsAMr/XiZr/j49jv06ceytOSBM8WuiwbR FAxmuSEZiTuiOMuZvI9uOTklbHQVaeg= X-MC-Unique: zPCunkD4NpqVkKvUSIXsyQ-1 X-Mimecast-MFC-AGG-ID: zPCunkD4NpqVkKvUSIXsyQ_1779371492 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 21/29] qom: validate ID format when creating objects Date: Thu, 21 May 2026 14:49:35 +0100 Message-ID: <20260521134943.1714527-22-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371816575158500 The object_new_with_props/propv methods failed to validate the ID string format, thus diverging from user_creatable_add_type. Tested-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Daniel P. Berrang=C3=A9 --- qom/object.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/qom/object.c b/qom/object.c index 4a15151c3b..08fc840f39 100644 --- a/qom/object.c +++ b/qom/object.c @@ -24,6 +24,8 @@ #include "qapi/forward-visitor.h" #include "qapi/qapi-builtin-visit.h" #include "qobject/qjson.h" +#include "qemu/id.h" +#include "qapi/qmp/qerror.h" #include "trace.h" =20 /* TODO: replace QObject with a simpler visitor to avoid a dependency @@ -755,6 +757,13 @@ Object *object_new_with_propv(const char *typename, ObjectClass *klass; UserCreatable *uc; =20 + if (id !=3D NULL && !id_wellformed(id)) { + error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "id", "an identifie= r"); + error_append_hint(errp, "Identifiers consist of letters, digits, " + "'-', '.', '_', starting with a letter.\n"); + return NULL; + } + klass =3D object_class_by_name(typename); if (!klass) { error_setg(errp, "invalid object type: %s", typename); --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371789; cv=none; d=zohomail.com; s=zohoarc; b=leRZ60efaNu5zN8sShXLp6G1fXoklFmjZaq1QWCJ0YHAkBcqMAX0WE05gMfw94ag/z2wRTjCvf+Nj1y3FoRZbYs47PEvN1F7xCoEivHjEwMygb4MLBcNCbBZ89yUe7G9IW+zFKqCF6yD53+sO9jR5agTQNuc3vZeU9SujNICsw4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371789; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8+P2JDg2djh/jf+gYQ0Qt/KfwgHeJkU+Z2fiHgOikzU=; b=c22UFLAauCdvE3T1aApSTaZ403HMvmOag9NlX7S7UJbYGmTX+TLaTc59rlaP3ZS+RtAMVnyWton5/68iZ68Nb17NDo2710sTSEjRu4T8Tzcx2xt/wUv5F1tU+5YxocCxUAOtLfDm09egILpII5gLpvUXLWBSdw0EcpK5BhTNQyI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371789047516.0438274564498; Thu, 21 May 2026 06:56:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3oT-0001zm-5S; Thu, 21 May 2026 09:51:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3oR-0001tg-It for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:47 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3oP-0006Se-SY for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:47 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-159-QbgsHutRNceBwUKmAGTMyQ-1; Thu, 21 May 2026 09:51:38 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 15C1B19560BE; Thu, 21 May 2026 13:51:37 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B7C0A1956053; Thu, 21 May 2026 13:51:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371505; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8+P2JDg2djh/jf+gYQ0Qt/KfwgHeJkU+Z2fiHgOikzU=; b=TtTSLz+Bvga+HuMnAlPWcUCyLy4ZzlWC9oSpK04XLdQVTQU//093twJW4dtFzo+uix9+pe 33wnyn+Rd0+FGnMJAAFeKVFLoxOkrEIxoUcaJYNM9C5ZRAETIb3SerggzT06YxygeFhMsT MVgrILrfwBDf03vQfl2ZUuEuEP+kqns= X-MC-Unique: QbgsHutRNceBwUKmAGTMyQ-1 X-Mimecast-MFC-AGG-ID: QbgsHutRNceBwUKmAGTMyQ_1779371497 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 22/29] qom: make errp last param in methods taking va_list Date: Thu, 21 May 2026 14:49:36 +0100 Message-ID: <20260521134943.1714527-23-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371791824154100 object_new_with_props can't put 'errp' last due to the use of variadic arguments. That constraint does not apply to the use of va_list with object_new_with_propv, so follow normal practice with 'errp' placement. The same rationale applies to object_set_propv. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Daniel P. Berrang=C3=A9 --- include/qom/object.h | 10 +++++----- qom/object.c | 20 ++++++++++---------- tests/unit/check-qom-proplist.c | 4 ++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/include/qom/object.h b/include/qom/object.h index 2a2829343d..a905a9e42f 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -689,16 +689,16 @@ Object *object_new_with_props(const char *typename, * @typename: The name of the type of the object to instantiate. * @parent: the parent object * @id: The unique ID of the object - * @errp: pointer to error object * @vargs: list of property names and values + * @errp: pointer to error object * * See object_new_with_props() for documentation. */ Object *object_new_with_propv(const char *typename, Object *parent, const char *id, - Error **errp, - va_list vargs); + va_list vargs, + Error **errp); =20 /** * object_set_props: @@ -739,14 +739,14 @@ bool object_set_props(Object *obj, Error **errp, ...)= G_GNUC_NULL_TERMINATED; /** * object_set_propv: * @obj: the object instance to set properties on - * @errp: pointer to error object * @vargs: list of property names and values + * @errp: pointer to error object * * See object_set_props() for documentation. * * Returns: %true on success, %false on error. */ -bool object_set_propv(Object *obj, Error **errp, va_list vargs); +bool object_set_propv(Object *obj, va_list vargs, Error **errp); =20 /** * object_initialize: diff --git a/qom/object.c b/qom/object.c index 08fc840f39..ecae322d2a 100644 --- a/qom/object.c +++ b/qom/object.c @@ -541,7 +541,7 @@ bool object_initialize_child_with_propsv(Object *parent= obj, object_initialize(childobj, size, type); obj =3D OBJECT(childobj); =20 - if (!object_set_propv(obj, errp, vargs)) { + if (!object_set_propv(obj, vargs, errp)) { goto out; } =20 @@ -740,7 +740,7 @@ Object *object_new_with_props(const char *typename, Object *obj; =20 va_start(vargs, errp); - obj =3D object_new_with_propv(typename, parent, id, errp, vargs); + obj =3D object_new_with_propv(typename, parent, id, vargs, errp); va_end(vargs); =20 return obj; @@ -750,8 +750,8 @@ Object *object_new_with_props(const char *typename, Object *object_new_with_propv(const char *typename, Object *parent, const char *id, - Error **errp, - va_list vargs) + va_list vargs, + Error **errp) { Object *obj; ObjectClass *klass; @@ -776,7 +776,7 @@ Object *object_new_with_propv(const char *typename, } obj =3D object_new_with_type(klass->type); =20 - if (!object_set_propv(obj, errp, vargs)) { + if (!object_set_propv(obj, vargs, errp)) { goto error; } =20 @@ -804,14 +804,14 @@ Object *object_new_with_propv(const char *typename, =20 =20 bool object_set_props(Object *obj, - Error **errp, - ...) + Error **errp, + ...) { va_list vargs; bool ret; =20 va_start(vargs, errp); - ret =3D object_set_propv(obj, errp, vargs); + ret =3D object_set_propv(obj, vargs, errp); va_end(vargs); =20 return ret; @@ -819,8 +819,8 @@ bool object_set_props(Object *obj, =20 =20 bool object_set_propv(Object *obj, - Error **errp, - va_list vargs) + va_list vargs, + Error **errp) { const char *propname; =20 diff --git a/tests/unit/check-qom-proplist.c b/tests/unit/check-qom-proplis= t.c index ee3c6fb32b..7f31735459 100644 --- a/tests/unit/check-qom-proplist.c +++ b/tests/unit/check-qom-proplist.c @@ -373,8 +373,8 @@ static Object *new_helper(Error **errp, obj =3D object_new_with_propv(TYPE_DUMMY, parent, "dummy0", - errp, - vargs); + vargs, + errp); va_end(vargs); return obj; } --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371648; cv=none; d=zohomail.com; s=zohoarc; b=gzmnEtxIKPLYVGHVfJugY/KCMZD3hYH8XD6pLAuOiJT4+xLGd5AzleJyBUyoRelFOk961EBuaQFDYMAEuyBbVgkDiD2VAmcosebv3N1mLIwY+S1/XyEaWwzHDRMCwhhaHNQugfXE4mH6QCcz8F24I/hvesbEWGPt9kNIe03UfB8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371648; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=k+gzzh0TF1FWRjL4FpB4zjStDbm4yVLLWmVa3Ip2Xtw=; b=KYxxPWA0AQHbIcDDECz0uJfHorDoseAzXcicpP/L///2cIP2dywkrRlwpCDcy9H5u0lvT7udPCrnjaLKpSfm50+hfuoW54lV+18Swn0dF/BWLOHFpTi4r42r4H6eSTOYUTpcVwQ+xBCBeKOB3Z7QTT0EA8WaHJd3MkDGfCJvJrs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371648246784.1391506193371; Thu, 21 May 2026 06:54:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3oW-0002HM-1I; Thu, 21 May 2026 09:51:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3oT-00020M-Bg for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:49 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3oR-0006TA-Ky for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:49 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-662-wWIs6mWWPkKLDZdIiiX2LA-1; Thu, 21 May 2026 09:51:44 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id A156D195605E; Thu, 21 May 2026 13:51:42 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 85B801956053; Thu, 21 May 2026 13:51:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371507; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=k+gzzh0TF1FWRjL4FpB4zjStDbm4yVLLWmVa3Ip2Xtw=; b=F8EyaPkS48JUrsUQWi7CEfCR1QqD/YxqML+lHD4hE80BRQ7gv5zH2CwTEyNiQa1NQMugHM 6pDxkJWAZIJ6FHjXBaE1QNVR+SlpUfawDKRIkBMOr5KLYX6DwxFwvr/rbR8SRUi1hFGlr6 EwWg747j/ZWPdW1rU/gGnoIoyh1d/mo= X-MC-Unique: wWIs6mWWPkKLDZdIiiX2LA-1 X-Mimecast-MFC-AGG-ID: wWIs6mWWPkKLDZdIiiX2LA_1779371502 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 23/29] qom: shorten name of object_set_properties_from_keyval Date: Thu, 21 May 2026 14:49:37 +0100 Message-ID: <20260521134943.1714527-24-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371650269154101 This matches the convention established by the object_set_props and object_set_propv methods. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Daniel P. Berrang=C3=A9 --- include/qom/object.h | 6 +++--- qom/object_interfaces.c | 12 ++++++------ system/qdev-monitor.c | 4 ++-- system/vl.c | 7 ++++--- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/include/qom/object.h b/include/qom/object.h index a905a9e42f..83b0cd01b5 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -915,7 +915,7 @@ type_init(do_qemu_init_ ## type_array) bool type_print_class_properties(const char *type); =20 /** - * object_set_properties_from_keyval: + * object_set_props_from_keyval: * @obj: a QOM object * @qdict: a dictionary with the properties to be set * @from_json: true if leaf values of @qdict are typed, false if they @@ -925,8 +925,8 @@ bool type_print_class_properties(const char *type); * For each key in the dictionary, parse the value string if needed, * then set the corresponding property in @obj. */ -void object_set_properties_from_keyval(Object *obj, const QDict *qdict, - bool from_json, Error **errp); +void object_set_props_from_keyval(Object *obj, const QDict *qdict, + bool from_json, Error **errp); =20 /** * object_class_dynamic_cast_assert: diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c index 415cbee8c5..4377d65b76 100644 --- a/qom/object_interfaces.c +++ b/qom/object_interfaces.c @@ -44,8 +44,8 @@ bool user_creatable_can_be_deleted(UserCreatable *uc) } } =20 -static void object_set_properties_from_qdict(Object *obj, const QDict *qdi= ct, - Visitor *v, Error **errp) +static void object_set_props_from_qdict(Object *obj, const QDict *qdict, + Visitor *v, Error **errp) { const QDictEntry *e; =20 @@ -62,8 +62,8 @@ out: visit_end_struct(v, NULL); } =20 -void object_set_properties_from_keyval(Object *obj, const QDict *qdict, - bool from_json, Error **errp) +void object_set_props_from_keyval(Object *obj, const QDict *qdict, + bool from_json, Error **errp) { Visitor *v; if (from_json) { @@ -71,7 +71,7 @@ void object_set_properties_from_keyval(Object *obj, const= QDict *qdict, } else { v =3D qobject_input_visitor_new_keyval(QOBJECT(qdict)); } - object_set_properties_from_qdict(obj, qdict, v, errp); + object_set_props_from_qdict(obj, qdict, v, errp); visit_free(v); } =20 @@ -110,7 +110,7 @@ Object *user_creatable_add_type(const char *type, const= char *id, =20 assert(qdict); obj =3D object_new_with_class(klass); - object_set_properties_from_qdict(obj, qdict, v, &local_err); + object_set_props_from_qdict(obj, qdict, v, &local_err); if (local_err) { goto out; } diff --git a/system/qdev-monitor.c b/system/qdev-monitor.c index e5b55e3004..dfc95a08c1 100644 --- a/system/qdev-monitor.c +++ b/system/qdev-monitor.c @@ -730,8 +730,8 @@ DeviceState *qdev_device_add_from_qdict(const QDict *op= ts, qdict_del(properties, "bus"); qdict_del(properties, "id"); =20 - object_set_properties_from_keyval(&dev->parent_obj, properties, from_j= son, - errp); + object_set_props_from_keyval(&dev->parent_obj, properties, from_json, + errp); qobject_unref(properties); if (*errp) { goto err_del_dev; diff --git a/system/vl.c b/system/vl.c index e690aa3ed8..da36b2c6e1 100644 --- a/system/vl.c +++ b/system/vl.c @@ -2010,7 +2010,8 @@ static bool object_create_early(const char *type) =20 static void qemu_apply_machine_options(QDict *qdict) { - object_set_properties_from_keyval(OBJECT(current_machine), qdict, fals= e, &error_fatal); + object_set_props_from_keyval(OBJECT(current_machine), qdict, + false, &error_fatal); =20 if (semihosting_enabled(false) && !semihosting_get_argc()) { /* fall back to the -kernel/-append */ @@ -2225,8 +2226,8 @@ static void qemu_create_machine(QDict *qdict) keyval_parse(machine_class->default_machine_opts, NULL, NULL, &error_abort); qemu_apply_legacy_machine_options(default_opts); - object_set_properties_from_keyval(OBJECT(current_machine), default= _opts, - false, &error_abort); + object_set_props_from_keyval(OBJECT(current_machine), default_opts, + false, &error_abort); qobject_unref(default_opts); } } --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371525; cv=none; d=zohomail.com; s=zohoarc; b=Ny3BM+yeMxjvuNRJaWNIrwiz+nPaK+EulKkOIJRyf+5dJhR/jmk0bdZ7Yc90cucRQWQJuoR49iG1ZfoObrf+Ysv8T+v3MS8i7wQLKHT9uSfgaeHNSS/C+RMzRmPB3zTU6PJe1QxykCaFtqTy5A1Y4M3EC1xLnLbK7lbCxPyJLCI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371525; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=SOlUxy0YzNh0sNDdbP3tPts0AP13pJpoY3TgxxsOfSk=; b=MvzOEgL3dcP70mHrzNE4Wkp3wggCJdmGY5lIuTJL6NiKyMOgmV3N+Lc0WDefjaa9XQTcmL6oB6J1n/2KHXJuOOilhxj0xw14QnWhfjMYGM+1S8L1iyCJrmGZ4vCOvpNFyNf08ZMxkb7q8S+XPW0aPINRkmOypgHQuymg/G/0hqQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371525268268.9598758331713; Thu, 21 May 2026 06:52:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3oe-0002xq-Q7; Thu, 21 May 2026 09:52:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3ob-0002rr-95 for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:57 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3oZ-0006UP-KD for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:56 -0400 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-355-vgmyOkr7MRODtc-sYvhgGA-1; Thu, 21 May 2026 09:51:49 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 94ACE19560A6; Thu, 21 May 2026 13:51:47 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 1CEE41956053; Thu, 21 May 2026 13:51:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371514; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=SOlUxy0YzNh0sNDdbP3tPts0AP13pJpoY3TgxxsOfSk=; b=Dv/qdvi1xDBS5wnafgSqCkAMkEdCchzYDPvAxnmLUzlps15Fcsd26bwdNcdp9+5ca0SBH6 5zLLoE0KsXQz3sy3En1tMJXUCrVADjCNmHrj87tLNTu/EMGzN/X/5fyBa1wcMQ2pR8D95Y 8fiC1YeoI9QAvN7gztexbiMq3PGqO+0= X-MC-Unique: vgmyOkr7MRODtc-sYvhgGA-1 X-Mimecast-MFC-AGG-ID: vgmyOkr7MRODtc-sYvhgGA_1779371507 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 24/29] qom: have object_set_props_keyval return bool Date: Thu, 21 May 2026 14:49:38 +0100 Message-ID: <20260521134943.1714527-25-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371581846158500 This matches the convention established by the object_set_props and object_set_propv methods. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Daniel P. Berrang=C3=A9 --- include/qom/object.h | 4 +++- qom/object_interfaces.c | 13 +++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/include/qom/object.h b/include/qom/object.h index 83b0cd01b5..822f56c87e 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -924,8 +924,10 @@ bool type_print_class_properties(const char *type); * * For each key in the dictionary, parse the value string if needed, * then set the corresponding property in @obj. + * + * Returns: %true on success, %false on error. */ -void object_set_props_from_keyval(Object *obj, const QDict *qdict, +bool object_set_props_from_keyval(Object *obj, const QDict *qdict, bool from_json, Error **errp); =20 /** diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c index 4377d65b76..50736b80c8 100644 --- a/qom/object_interfaces.c +++ b/qom/object_interfaces.c @@ -44,13 +44,14 @@ bool user_creatable_can_be_deleted(UserCreatable *uc) } } =20 -static void object_set_props_from_qdict(Object *obj, const QDict *qdict, +static bool object_set_props_from_qdict(Object *obj, const QDict *qdict, Visitor *v, Error **errp) { + ERRP_GUARD(); const QDictEntry *e; =20 if (!visit_start_struct(v, NULL, NULL, 0, errp)) { - return; + return false; } for (e =3D qdict_first(qdict); e; e =3D qdict_next(qdict, e)) { if (!object_property_set(obj, e->key, v, errp)) { @@ -60,19 +61,23 @@ static void object_set_props_from_qdict(Object *obj, co= nst QDict *qdict, visit_check_struct(v, errp); out: visit_end_struct(v, NULL); + + return *errp =3D=3D NULL; } =20 -void object_set_props_from_keyval(Object *obj, const QDict *qdict, +bool object_set_props_from_keyval(Object *obj, const QDict *qdict, bool from_json, Error **errp) { + bool ret; Visitor *v; if (from_json) { v =3D qobject_input_visitor_new(QOBJECT(qdict)); } else { v =3D qobject_input_visitor_new_keyval(QOBJECT(qdict)); } - object_set_props_from_qdict(obj, qdict, v, errp); + ret =3D object_set_props_from_qdict(obj, qdict, v, errp); visit_free(v); + return ret; } =20 Object *user_creatable_add_type(const char *type, const char *id, --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371573; cv=none; d=zohomail.com; s=zohoarc; b=U38VKw99NaGa0GFmOmUmgTEjdFSG29MJiyUawuvVhH9lsNWBfzvlTJwwvioTJi62sSaX9OIqGGjE0tO5gMl9pZB7ekrda4khTJq+9PHlW6q/I/dUAv/LA5YKrOEmN0jqYK9Gbh9FqLyRDDknjeLSRykJoBcPjt39a6eSbkP/vJc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371573; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=TiRGP8c1Dq0aQiPmEyOYNIHy4V+WbpPidZD1+6P+U+Y=; b=QxVpJmjcYXdYMRRVQJQ8AYohuMu46CGsPTuwP2o8R0UPMwKvyx7MsQex4rSAOkSI8uzHdIzgGrAZ2mkaJacdko7ismZysODtnROrASmxulv7IHfSUnCuv/ba0gquSXPdkxK5J99GkzO+3lrMp7RiGJ3TVfX492xrq4AxKWHOVYg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177937157377220.53368944296426; Thu, 21 May 2026 06:52:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3og-0003Eg-HO; Thu, 21 May 2026 09:52:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3oe-00035O-KI for qemu-devel@nongnu.org; Thu, 21 May 2026 09:52:00 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3oc-0006Uy-6q for qemu-devel@nongnu.org; Thu, 21 May 2026 09:51:59 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-457-wZMEEK4lMtWiETEzbjcL8A-1; Thu, 21 May 2026 09:51:54 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id B3492195609F; Thu, 21 May 2026 13:51:52 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 10E621956053; Thu, 21 May 2026 13:51:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371517; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=TiRGP8c1Dq0aQiPmEyOYNIHy4V+WbpPidZD1+6P+U+Y=; b=H4jRz5bXEWHX26jEfnTE1w7hiHMYARAwOhTs9bHWFIdxbFLBwQaMlUKdDuNiHpeB/X/LmY +squapxVHaAwo5KpxC8vdtk7N/HNhDsmgf8MbWYmIj0v/Sa1p79ELc296S7jLHpg039sXa BTt0qHNRv+S5NOlzAF32UAMZQLusmnw= X-MC-Unique: wZMEEK4lMtWiETEzbjcL8A-1 X-Mimecast-MFC-AGG-ID: wZMEEK4lMtWiETEzbjcL8A_1779371512 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 25/29] qom: move object_set_prop_keyval into object.c Date: Thu, 21 May 2026 14:49:39 +0100 Message-ID: <20260521134943.1714527-26-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371576362154100 This matches the location of the object_set_props and object_set_propv methods, since this method is not inherently tied to the user creatable interface. As part of this, object_set_props_from_qdict is also exposed as a public API since it is still called from object_interfaces.c. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Daniel P. Berrang=C3=A9 --- include/qom/object.h | 47 +++++++++++++++++++++++++++-------------- qom/object.c | 36 +++++++++++++++++++++++++++++++ qom/object_interfaces.c | 36 ------------------------------- 3 files changed, 67 insertions(+), 52 deletions(-) diff --git a/include/qom/object.h b/include/qom/object.h index 822f56c87e..be65acff93 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -748,6 +748,37 @@ bool object_set_props(Object *obj, Error **errp, ...) = G_GNUC_NULL_TERMINATED; */ bool object_set_propv(Object *obj, va_list vargs, Error **errp); =20 +/** + * object_set_props_from_qdict: + * @obj: a QOM object + * @qdict: a dictionary with the properties to be set + * @v: a visitor to iterate over @dict + * @errp: pointer to error object + * + * For each key in the dictionary, set the corresponding + * property in @obj. + * + * Returns: %true on success, %false on error. + */ +bool object_set_props_from_qdict(Object *obj, const QDict *qdict, + Visitor *v, Error **errp); + +/** + * object_set_props_from_keyval: + * @obj: a QOM object + * @qdict: a dictionary with the properties to be set + * @from_json: true if leaf values of @qdict are typed, false if they + * are strings + * @errp: pointer to error object + * + * For each key in the dictionary, parse the value string if needed, + * then set the corresponding property in @obj. + * + * Returns: %true on success, %false on error. + */ +bool object_set_props_from_keyval(Object *obj, const QDict *qdict, + bool from_json, Error **errp); + /** * object_initialize: * @obj: A pointer to the memory to be used for the object. @@ -914,22 +945,6 @@ type_init(do_qemu_init_ ## type_array) */ bool type_print_class_properties(const char *type); =20 -/** - * object_set_props_from_keyval: - * @obj: a QOM object - * @qdict: a dictionary with the properties to be set - * @from_json: true if leaf values of @qdict are typed, false if they - * are strings - * @errp: pointer to error object - * - * For each key in the dictionary, parse the value string if needed, - * then set the corresponding property in @obj. - * - * Returns: %true on success, %false on error. - */ -bool object_set_props_from_keyval(Object *obj, const QDict *qdict, - bool from_json, Error **errp); - /** * object_class_dynamic_cast_assert: * @klass: The #ObjectClass to attempt to cast. diff --git a/qom/object.c b/qom/object.c index ecae322d2a..3f2569d654 100644 --- a/qom/object.c +++ b/qom/object.c @@ -23,6 +23,7 @@ #include "qapi/qobject-input-visitor.h" #include "qapi/forward-visitor.h" #include "qapi/qapi-builtin-visit.h" +#include "qobject/qdict.h" #include "qobject/qjson.h" #include "qemu/id.h" #include "qapi/qmp/qerror.h" @@ -838,6 +839,41 @@ bool object_set_propv(Object *obj, return true; } =20 +bool object_set_props_from_qdict(Object *obj, const QDict *qdict, + Visitor *v, Error **errp) +{ + ERRP_GUARD(); + const QDictEntry *e; + + if (!visit_start_struct(v, NULL, NULL, 0, errp)) { + return false; + } + for (e =3D qdict_first(qdict); e; e =3D qdict_next(qdict, e)) { + if (!object_property_set(obj, e->key, v, errp)) { + goto out; + } + } + visit_check_struct(v, errp); +out: + visit_end_struct(v, NULL); + + return *errp =3D=3D NULL; +} + +bool object_set_props_from_keyval(Object *obj, const QDict *qdict, + bool from_json, Error **errp) +{ + bool ret; + Visitor *v; + if (from_json) { + v =3D qobject_input_visitor_new(QOBJECT(qdict)); + } else { + v =3D qobject_input_visitor_new_keyval(QOBJECT(qdict)); + } + ret =3D object_set_props_from_qdict(obj, qdict, v, errp); + visit_free(v); + return ret; +} =20 Object *object_dynamic_cast(Object *obj, const char *typename) { diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c index 50736b80c8..e0a3cd8d0f 100644 --- a/qom/object_interfaces.c +++ b/qom/object_interfaces.c @@ -44,42 +44,6 @@ bool user_creatable_can_be_deleted(UserCreatable *uc) } } =20 -static bool object_set_props_from_qdict(Object *obj, const QDict *qdict, - Visitor *v, Error **errp) -{ - ERRP_GUARD(); - const QDictEntry *e; - - if (!visit_start_struct(v, NULL, NULL, 0, errp)) { - return false; - } - for (e =3D qdict_first(qdict); e; e =3D qdict_next(qdict, e)) { - if (!object_property_set(obj, e->key, v, errp)) { - goto out; - } - } - visit_check_struct(v, errp); -out: - visit_end_struct(v, NULL); - - return *errp =3D=3D NULL; -} - -bool object_set_props_from_keyval(Object *obj, const QDict *qdict, - bool from_json, Error **errp) -{ - bool ret; - Visitor *v; - if (from_json) { - v =3D qobject_input_visitor_new(QOBJECT(qdict)); - } else { - v =3D qobject_input_visitor_new_keyval(QOBJECT(qdict)); - } - ret =3D object_set_props_from_qdict(obj, qdict, v, errp); - visit_free(v); - return ret; -} - Object *user_creatable_add_type(const char *type, const char *id, const QDict *qdict, Visitor *v, Error **errp) --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371768; cv=none; d=zohomail.com; s=zohoarc; b=mgKLhkaQgaaMxuBfbsMAF/d8aODW4VDyqj+Yafa/jSxhmeORTRf1fB2UECuEA91v0naw9WoicZ/aU6JkLUfT6zziZxktNoKKzvfdBlX018jhKlTewqjiERAkuO74pRwIveFMDKG3bEIKR6wGjPqJIgsY+jopNUMoru4WHKUyGdY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371768; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1MQXuPaRB7cSoaPWWgGbs2E8mNqPEjYl8oMsJfb79dM=; b=DLlkelt1Ksv86ntwUeed8rIK2YjLE8+f2iHcdkRKeAjKgNLJ3+nq7T6QmXelOWkXmLJ1vHVWWwp/e8Sj3pSlGZLvUQg7aT1038cgKuUORVuFFfFBdD+ckQMf+zMDe14857zVf2NsNVNAVfOJnhBj8LqdV7JiCzFKsPrcfkF1X1U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177937176813660.64234256999964; Thu, 21 May 2026 06:56:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3on-0003nC-Bg; Thu, 21 May 2026 09:52:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3ol-0003fJ-5u for qemu-devel@nongnu.org; Thu, 21 May 2026 09:52:07 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3oj-0006Vv-H3 for qemu-devel@nongnu.org; Thu, 21 May 2026 09:52:06 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-372-sqo0sRZcNk6BzH6MjXy9CA-1; Thu, 21 May 2026 09:51:59 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 59EBB19560BD; Thu, 21 May 2026 13:51:58 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 2F5881956053; Thu, 21 May 2026 13:51:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371524; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1MQXuPaRB7cSoaPWWgGbs2E8mNqPEjYl8oMsJfb79dM=; b=a8IvC6S2L2lqlDlzlrHxZdDG9oHJtgXQ9ow2mFr4JlRtfqgCcoJZJ/kj+JAMxgzSi48VeI M17f8NaxuT1NqkAxPnKE5/kOLgiiJlm7Bp0CgXQWJKCLvIQQyZzuJNPmNEcCIV4VGW/zPZ +qEXtdqG1vhUl+F/a80G54+8A5hJtI8= X-MC-Unique: sqo0sRZcNk6BzH6MjXy9CA-1 X-Mimecast-MFC-AGG-ID: sqo0sRZcNk6BzH6MjXy9CA_1779371518 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 26/29] qom: add object_new_with_props_from_qdict Date: Thu, 21 May 2026 14:49:40 +0100 Message-ID: <20260521134943.1714527-27-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371826436158500 This will be used to replace user_creatable_add_type with an impl that shares most code with object_new_with_props, and is not tied to the user creatable interface. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Daniel P. Berrang=C3=A9 --- include/qom/object.h | 19 +++++++++++ qom/object.c | 75 ++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 88 insertions(+), 6 deletions(-) diff --git a/include/qom/object.h b/include/qom/object.h index be65acff93..fb1cd92d97 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -700,6 +700,25 @@ Object *object_new_with_propv(const char *typename, va_list vargs, Error **errp); =20 +/** + * object_new_with_props_from_qdict: + * @typename: The name of the type of the object to instantiate. + * @parent: the parent object + * @id: The unique ID of the object + * @props: dictionary of property names and values + * @v: visitor to iterate over @props + * @errp: pointer to error object + * + * A variant of object_new_with_props() which accepts the + * properties in a QDict. + */ +Object *object_new_with_props_from_qdict(const char *typename, + Object *parent, + const char *id, + const QDict *props, + Visitor *v, + Error **errp); + /** * object_set_props: * @obj: the object instance to set properties on diff --git a/qom/object.c b/qom/object.c index 3f2569d654..a11f559445 100644 --- a/qom/object.c +++ b/qom/object.c @@ -748,11 +748,14 @@ Object *object_new_with_props(const char *typename, } =20 =20 -Object *object_new_with_propv(const char *typename, - Object *parent, - const char *id, - va_list vargs, - Error **errp) +static Object * +object_new_with_props_helper(const char *typename, + Object *parent, + const char *id, + void *props, + bool (set_props)(Object *obj, void *props, + Error **errp), + Error **errp) { Object *obj; ObjectClass *klass; @@ -777,7 +780,7 @@ Object *object_new_with_propv(const char *typename, } obj =3D object_new_with_type(klass->type); =20 - if (!object_set_propv(obj, vargs, errp)) { + if (!set_props(obj, props, errp)) { goto error; } =20 @@ -803,6 +806,66 @@ Object *object_new_with_propv(const char *typename, return NULL; } =20 +struct ObjectNewVargsData { + va_list vargs; +}; + +static bool object_new_with_propv_setter(Object *obj, + void *props, + Error **errp) +{ + struct ObjectNewVargsData *data =3D props; + return object_set_propv(obj, data->vargs, errp); +} + +Object *object_new_with_propv(const char *typename, + Object *parent, + const char *id, + va_list vargs, + Error **errp) +{ + Object *obj; + struct ObjectNewVargsData data; + + va_copy(data.vargs, vargs); + obj =3D object_new_with_props_helper(typename, + parent, + id, + &data, + object_new_with_propv_setter, + errp); + va_end(data.vargs); + return obj; +} + +struct ObjectNewQDictData { + const QDict *props; + Visitor *v; +}; + +static bool object_new_with_qdict_setter(Object *obj, + void *props, + Error **errp) +{ + struct ObjectNewQDictData *data =3D props; + return object_set_props_from_qdict(obj, data->props, data->v, errp); +} + +Object *object_new_with_props_from_qdict(const char *typename, + Object *parent, + const char *id, + const QDict *props, + Visitor *v, + Error **errp) +{ + struct ObjectNewQDictData data =3D { props, v }; + return object_new_with_props_helper(typename, + parent, + id, + &data, + object_new_with_qdict_setter, + errp); +} =20 bool object_set_props(Object *obj, Error **errp, --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371681; cv=none; d=zohomail.com; s=zohoarc; b=ZwH1R8ZXCSCn1WmcRxeJe5LI0rPbCDyUV/KWJaBwHp6NMqaWt9KsljTuzpwnmuJH0QI3LBOsTGWmC5BvA1pSGJOqIWxnYZSX+LZKjMhfZMZz792Mg+uJc8gtB0S3dEK1qjEwL+N/E769jSwqQ6aDr0s8Vo1zVivs3nBgVLn6YsY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371681; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=26FOAWe6CEIbzXUqveh6ti2zrWxtCUNKJmgkkPmlgVE=; b=VrE3BhUuTrz4bse92hUEsIOHhmEa5kCZn1W5Tfk0fvJqu10u84o5Wag2/N58bWnpPwGBtHKW+75MASDdKSClQvCGm7gkRgrHW5dudvoFD1Up9RbBu06KMsW8Mx+/F+fNnMpRw6liPMxbLPfgnon4V6/mBnnhs+cUpNHr6XsijEI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371681538815.7143658935918; Thu, 21 May 2026 06:54:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3os-0003uk-Ob; Thu, 21 May 2026 09:52:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3or-0003to-4t for qemu-devel@nongnu.org; Thu, 21 May 2026 09:52:13 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3oo-0006Wo-Vf for qemu-devel@nongnu.org; Thu, 21 May 2026 09:52:12 -0400 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-142-_kVd5xhNMlKizo9VG4VFAA-1; Thu, 21 May 2026 09:52:06 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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 E44DC18005B5; Thu, 21 May 2026 13:52:03 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id D97771956053; Thu, 21 May 2026 13:51:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371530; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=26FOAWe6CEIbzXUqveh6ti2zrWxtCUNKJmgkkPmlgVE=; b=LpWFv2aCIMwc4LifL8Wncw23Yfio4WB7v7zM54HOtOAW6JBCWEko1XDZ8RQP4DUybJ2G2x q558eZJHGsvvxV0NwTlPWyHOpalUDaj6RrDlbDLYZVkJ6RTh5h8SewHZHmwsajsaRc2497 qQRvuZkOcrf+lnWXJAztquuOXSjZumA= X-MC-Unique: _kVd5xhNMlKizo9VG4VFAA-1 X-Mimecast-MFC-AGG-ID: _kVd5xhNMlKizo9VG4VFAA_1779371524 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 27/29] qom: fix ability to create objects without a parent Date: Thu, 21 May 2026 14:49:41 +0100 Message-ID: <20260521134943.1714527-28-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371683798154100 object_new_with_propv allowed id/parent to be optional, in which case the caller was expected to own the returned object. Unfortunately a trailing object_unref() meant that the returned object was already freed. It is confusing to have a single method with two different ownership scenarios for the returned object. Make id/parent mandatory in object_new_with_propv once more, and add a new object_new_with_propv_parentless that does not accept id/parent at all and lets the caller own the returned reference. The helper method has abstracted the way properties are represented and set in order to facilitate the subsequent commit. Unit tests are added to address the root cause that allowed the bug to slip through in commit 6134d752. Fixes: 6134d7522e5 ("qom: don't require user creatable objects to be regist= ered") Tested-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Daniel P. Berrang=C3=A9 --- include/qom/object.h | 47 ++++++++++++++++++ qom/object.c | 74 +++++++++++++++++++++++---- tests/unit/check-qom-proplist.c | 88 ++++++++++++++++++++++++++++----- 3 files changed, 187 insertions(+), 22 deletions(-) diff --git a/include/qom/object.h b/include/qom/object.h index fb1cd92d97..11f55613fc 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -719,6 +719,53 @@ Object *object_new_with_props_from_qdict(const char *t= ypename, Visitor *v, Error **errp); =20 +/** + * object_new_with_props_parentless: + * @typename: The name of the type of the object to instantiate. + * @errp: pointer to error object + * @...: list of property names and values + * + * Behaviour as object_new_with_props(), except the object + * will not be added to any parent and thus the caller will + * own the returned instance. The caller must call + * object_unref when it is no longer required. + */ +Object *object_new_with_props_parentless(const char *typename, + Error **errp, + ...) G_GNUC_NULL_TERMINATED; + +/** + * object_new_with_propv_parentless: + * @typename: The name of the type of the object to instantiate. + * @vargs: list of property names and values + * @errp: pointer to error object + * + * Behaviour as object_new_with_propv(), except the object + * will not be added to any parent and thus the caller will + * own the returned instance. The caller must call + * object_unref when it is no longer required. + */ +Object *object_new_with_propv_parentless(const char *typename, + va_list vargs, + Error **errp); + +/** + * object_new_with_props_from_qdict_parentless: + * @typename: The name of the type of the object to instantiate. + * @props: dictionary of property names and values + * @v: visitor to iterate over @props + * @errp: pointer to error object + * + * Behaviour as object_new_with_props_from_qdict(), except the + * object will not be added to any parent and thus the caller + * will own the returned instance. The caller must call + * object_unref when it is no longer required. + */ +Object *object_new_with_props_from_qdict_parentless(const char *typename, + const QDict *props, + Visitor *v, + Error **errp); + /** * object_set_props: * @obj: the object instance to set properties on diff --git a/qom/object.c b/qom/object.c index a11f559445..5a7ac457c1 100644 --- a/qom/object.c +++ b/qom/object.c @@ -740,6 +740,8 @@ Object *object_new_with_props(const char *typename, va_list vargs; Object *obj; =20 + assert(parent !=3D NULL); + assert(id !=3D NULL); va_start(vargs, errp); obj =3D object_new_with_propv(typename, parent, id, vargs, errp); va_end(vargs); @@ -757,10 +759,14 @@ object_new_with_props_helper(const char *typename, Error **errp), Error **errp) { + ERRP_GUARD(); Object *obj; ObjectClass *klass; UserCreatable *uc; =20 + assert((id !=3D NULL && parent !=3D NULL) || + (id =3D=3D NULL && parent =3D=3D NULL)); + if (id !=3D NULL && !id_wellformed(id)) { error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "id", "an identifie= r"); error_append_hint(errp, "Identifiers consist of letters, digits, " @@ -785,7 +791,10 @@ object_new_with_props_helper(const char *typename, } =20 if (id !=3D NULL) { - object_property_add_child(parent, id, obj); + object_property_try_add_child(parent, id, obj, errp); + if (*errp) { + goto error; + } } =20 uc =3D (UserCreatable *)object_dynamic_cast(obj, TYPE_USER_CREATABLE); @@ -798,7 +807,6 @@ object_new_with_props_helper(const char *typename, } } =20 - object_unref(obj); return obj; =20 error: @@ -826,7 +834,8 @@ Object *object_new_with_propv(const char *typename, { Object *obj; struct ObjectNewVargsData data; - + assert(parent !=3D NULL); + assert(id !=3D NULL); va_copy(data.vargs, vargs); obj =3D object_new_with_props_helper(typename, parent, @@ -835,6 +844,9 @@ Object *object_new_with_propv(const char *typename, object_new_with_propv_setter, errp); va_end(data.vargs); + if (obj) { + object_unref(obj); + } return obj; } =20 @@ -859,12 +871,56 @@ Object *object_new_with_props_from_qdict(const char *= typename, Error **errp) { struct ObjectNewQDictData data =3D { props, v }; - return object_new_with_props_helper(typename, - parent, - id, - &data, - object_new_with_qdict_setter, - errp); + Object *obj; + assert(parent !=3D NULL); + assert(id !=3D NULL); + obj =3D object_new_with_props_helper(typename, + parent, + id, + &data, + object_new_with_qdict_setter, + errp); + if (obj) { + object_unref(obj); + } + return obj; +} + +Object *object_new_with_props_parentless(const char *typename, + Error **errp, + ...) +{ + va_list vargs; + Object *obj; + + va_start(vargs, errp); + obj =3D object_new_with_propv_parentless(typename, vargs, errp); + va_end(vargs); + + return obj; +} + +Object *object_new_with_propv_parentless(const char *typename, + va_list vargs, + Error **errp) +{ + Object *ret; + struct ObjectNewVargsData data; + va_copy(data.vargs, vargs); + ret =3D object_new_with_props_helper(typename, NULL, NULL, &data, + object_new_with_propv_setter, errp); + va_end(data.vargs); + return ret; +} + +Object *object_new_with_props_from_qdict_parentless(const char *typename, + const QDict *props, + Visitor *v, + Error **errp) +{ + struct ObjectNewQDictData data =3D { props, v }; + return object_new_with_props_helper(typename, NULL, NULL, &data, + object_new_with_qdict_setter, errp= ); } =20 bool object_set_props(Object *obj, diff --git a/tests/unit/check-qom-proplist.c b/tests/unit/check-qom-proplis= t.c index 7f31735459..954c898ce1 100644 --- a/tests/unit/check-qom-proplist.c +++ b/tests/unit/check-qom-proplist.c @@ -336,7 +336,7 @@ static QemuOptsList qemu_object_opts =3D { }; =20 =20 -static void test_dummy_createv(void) +static void test_dummy_createv_tree(void) { Error *err =3D NULL; Object *parent =3D object_get_objects_root(); @@ -351,6 +351,7 @@ static void test_dummy_createv(void) NULL)); =20 g_assert(err =3D=3D NULL); + g_assert_cmpint(dobj->parent_obj.ref, =3D=3D, 1); g_assert_cmpstr(dobj->sv, =3D=3D, "Hiss hiss hiss"); g_assert(dobj->bv =3D=3D true); g_assert(dobj->av =3D=3D DUMMY_PLATYPUS); @@ -362,9 +363,30 @@ static void test_dummy_createv(void) } =20 =20 -static Object *new_helper(Error **errp, - Object *parent, - ...) +static void test_dummy_createv_parentless(void) +{ + Error *err =3D NULL; + DummyObject *dobj =3D DUMMY_OBJECT( + object_new_with_props_parentless(TYPE_DUMMY, + &err, + "bv", "yes", + "sv", "Hiss hiss hiss", + "av", "platypus", + NULL)); + + g_assert(err =3D=3D NULL); + g_assert_cmpint(dobj->parent_obj.ref, =3D=3D, 1); + g_assert_cmpstr(dobj->sv, =3D=3D, "Hiss hiss hiss"); + g_assert(dobj->bv =3D=3D true); + g_assert(dobj->av =3D=3D DUMMY_PLATYPUS); + + object_unref(OBJECT(dobj)); +} + + +static Object *new_helper_tree(Error **errp, + Object *parent, + ...) { va_list vargs; Object *obj; @@ -379,19 +401,20 @@ static Object *new_helper(Error **errp, return obj; } =20 -static void test_dummy_createlist(void) +static void test_dummy_createlist_tree(void) { Error *err =3D NULL; Object *parent =3D object_get_objects_root(); DummyObject *dobj =3D DUMMY_OBJECT( - new_helper(&err, - parent, - "bv", "yes", - "sv", "Hiss hiss hiss", - "av", "platypus", - NULL)); + new_helper_tree(&err, + parent, + "bv", "yes", + "sv", "Hiss hiss hiss", + "av", "platypus", + NULL)); =20 g_assert(err =3D=3D NULL); + g_assert_cmpint(dobj->parent_obj.ref, =3D=3D, 1); g_assert_cmpstr(dobj->sv, =3D=3D, "Hiss hiss hiss"); g_assert(dobj->bv =3D=3D true); g_assert(dobj->av =3D=3D DUMMY_PLATYPUS); @@ -402,6 +425,39 @@ static void test_dummy_createlist(void) object_unparent(OBJECT(dobj)); } =20 +static Object *new_helper_parentless(Error **errp, + ...) +{ + va_list vargs; + Object *obj; + + va_start(vargs, errp); + obj =3D object_new_with_propv_parentless(TYPE_DUMMY, + vargs, + errp); + va_end(vargs); + return obj; +} + +static void test_dummy_createlist_parentless(void) +{ + Error *err =3D NULL; + DummyObject *dobj =3D DUMMY_OBJECT( + new_helper_parentless(&err, + "bv", "yes", + "sv", "Hiss hiss hiss", + "av", "platypus", + NULL)); + + g_assert(err =3D=3D NULL); + g_assert_cmpint(dobj->parent_obj.ref, =3D=3D, 1); + g_assert_cmpstr(dobj->sv, =3D=3D, "Hiss hiss hiss"); + g_assert(dobj->bv =3D=3D true); + g_assert(dobj->av =3D=3D DUMMY_PLATYPUS); + + object_unref(OBJECT(dobj)); +} + static bool test_create_obj(QDict *qdict, Error **errp) { Visitor *v =3D qobject_input_visitor_new_keyval(QOBJECT(qdict)); @@ -658,8 +714,14 @@ int main(int argc, char **argv) type_register_static(&dummy_bus_info); type_register_static(&dummy_backend_info); =20 - g_test_add_func("/qom/proplist/createlist", test_dummy_createlist); - g_test_add_func("/qom/proplist/createv", test_dummy_createv); + g_test_add_func("/qom/proplist/createlist/tree", + test_dummy_createlist_tree); + g_test_add_func("/qom/proplist/createlist/parentless", + test_dummy_createlist_parentless); + g_test_add_func("/qom/proplist/createv/tree", + test_dummy_createv_tree); + g_test_add_func("/qom/proplist/createv/parentless", + test_dummy_createv_parentless); g_test_add_func("/qom/proplist/createcmdline", test_dummy_createcmdl); g_test_add_func("/qom/proplist/badenum", test_dummy_badenum); g_test_add_func("/qom/proplist/getenum", test_dummy_getenum); --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371566; cv=none; d=zohomail.com; s=zohoarc; b=mRJePq7KdayKhnPA5Sh9yntqtZYHptuezVlFhyAb9n1f0+7Rtpg/2Jt2/wS0cbHz2OLv06LHvsjQ7LRSsmkkLCky38tnXJaqaOZJm4AsimmpfRims/2OS2i3tGh6BMRMC/n9BiblyETK0TlOTFt6mdNCP5bf58IUGz8kZKAiC8E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371566; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=SADnjsuaX2tH7zST0yPw1LUuFBObWj6PVplsWh6o5Ng=; b=KJArZApCL+Vqo/WmjHiWMuQ+CSrfQwCDWNg4GI88MAmi37PusI/stCYhXW3TRfBuSsJVg6Zy8sVDPv+QcDiByGCb10Eeo479BkJ+zFRIvT9iYHaRDHJpYLwQrQ9uZLleRtmWUOAechnUnhvcmVHkEgUGPJDjAAenRMbYMe9O1hc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371566205395.6652691588441; Thu, 21 May 2026 06:52:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3p3-00047g-4t; Thu, 21 May 2026 09:52:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3oz-00046h-Qz for qemu-devel@nongnu.org; Thu, 21 May 2026 09:52:21 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3oy-0006YJ-4h for qemu-devel@nongnu.org; Thu, 21 May 2026 09:52:21 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-479-g2GgCHDlNoed-CWfq7TEnA-1; Thu, 21 May 2026 09:52:09 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 735561956076; Thu, 21 May 2026 13:52:08 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 5FCCA1956053; Thu, 21 May 2026 13:52:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371539; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=SADnjsuaX2tH7zST0yPw1LUuFBObWj6PVplsWh6o5Ng=; b=AC2p6n37e3LjSWrpnMPPpTA0Ul+XEtkPz2oSKRyyRj6Epi6A/X3H0RPbqlAVTLQ73ge4K/ xEjVMsb9V2l811YfftblKRUvbDLmttL40vLpa377ZUVwPiX7akPAzpVVGR3Q4FsHfTkZJp PN2Wx7tIgk1hWtqN8RM9TSe1aPEvok8= X-MC-Unique: g2GgCHDlNoed-CWfq7TEnA-1 X-Mimecast-MFC-AGG-ID: g2GgCHDlNoed-CWfq7TEnA_1779371528 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 28/29] qom: allow object_new_with_prop* to trigger module loading Date: Thu, 21 May 2026 14:49:42 +0100 Message-ID: <20260521134943.1714527-29-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371638232158500 The object_new_with_prop* methods will shortly be replacing the user_creatable_add_type method. In order to do that, the object_new_with_prop* methods must allow module loading to be triggered for any types. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Daniel P. Berrang=C3=A9 --- qom/object.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qom/object.c b/qom/object.c index 5a7ac457c1..0ac201de4c 100644 --- a/qom/object.c +++ b/qom/object.c @@ -774,7 +774,7 @@ object_new_with_props_helper(const char *typename, return NULL; } =20 - klass =3D object_class_by_name(typename); + klass =3D module_object_class_by_name(typename); if (!klass) { error_setg(errp, "invalid object type: %s", typename); return NULL; --=20 2.54.0 From nobody Sat May 30 17:43:31 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1779371768; cv=none; d=zohomail.com; s=zohoarc; b=OECIuYUZrCwM/g/htacKVcKzMVh6cJV/CF24X4kC3yAD5lIPy1gxpfcVA337CgNIqP2YHRvrSf+/09rr/bXwF7FpwVGWC9Zwbl78tTr5EH/FUUHSW9XhVQhP1M+0b/d2DMZrLdcA+rYdN1km4U0s3aeo8anQ2PIU8Aq5xaaeHEc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371768; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=h9wLB4CLym9nrvKDYBwDKPAx6VH+gv3KlNnDNRnFKzg=; b=Lm3kkMMXP88NobgmlRntdJOW5vnvOva9R5y2PjAvrU0ilHIaaujdzFfveuZQhLy6K6rFcJJO/xhebfZBR2XxpcPnhq2uIadY9pSO8aH4+CfipU6ELjqjO21Vv9I9wPjatol991ci5ZNxz3ziDh/bD3IwWKRlJz3W5sWzoNPk7UM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779371768038853.1043857531714; Thu, 21 May 2026 06:56:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQ3p9-0004C2-5Q; Thu, 21 May 2026 09:52:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3p3-00049p-HS for qemu-devel@nongnu.org; Thu, 21 May 2026 09:52:27 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wQ3p1-0006Yx-MR for qemu-devel@nongnu.org; Thu, 21 May 2026 09:52:25 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-339-ldcZa0lUN0yx4PCQ8CxF0Q-1; Thu, 21 May 2026 09:52:16 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (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-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 5F37219560B5; Thu, 21 May 2026 13:52:13 +0000 (UTC) Received: from berrange.com (unknown [10.44.33.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 06CB51956053; Thu, 21 May 2026 13:52:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779371543; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=h9wLB4CLym9nrvKDYBwDKPAx6VH+gv3KlNnDNRnFKzg=; b=PsEOOl9tBJSzrNsAtcPUuNA28RtknMX4kVdvF3z1u+oTsA/HEN12jqQMYCZ4byOkmqUDkL WNnqJVBXFJHAn5FKJ1cDAEGmy8E/h3hMiZMY2nrFvicVpvJpkBKlNtWYG2jiRKOJrtFuts Fw50CuI161lmRWp8DNJuKk1Y9s3dttU= X-MC-Unique: ldcZa0lUN0yx4PCQ8CxF0Q-1 X-Mimecast-MFC-AGG-ID: ldcZa0lUN0yx4PCQ8CxF0Q_1779371533 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: Hanna Reitz , Pierrick Bouvier , Paolo Bonzini , Kevin Wolf , qemu-block@nongnu.org, John Snow , Thanos Makatos , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , John Levon , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 29/29] qom: drop user_creatable_add_type method Date: Thu, 21 May 2026 14:49:43 +0100 Message-ID: <20260521134943.1714527-30-berrange@redhat.com> In-Reply-To: <20260521134943.1714527-1-berrange@redhat.com> References: <20260521134943.1714527-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1779371826696158501 This can be replaced by object_new_with_props_from_qdict, which does functionally the same job, but the caller does not own the returned reference, instead the parent object owns it. In one case we can use object_new_with_props_from_qdict_owned instead since the object is not intended to have any parent. Tested-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Daniel P. Berrang=C3=A9 --- authz/listfile.c | 4 +- include/qom/object_interfaces.h | 18 --------- qom/object_interfaces.c | 70 ++------------------------------- tests/unit/check-qom-proplist.c | 5 +-- 4 files changed, 7 insertions(+), 90 deletions(-) diff --git a/authz/listfile.c b/authz/listfile.c index 13741d5a72..23655f8663 100644 --- a/authz/listfile.c +++ b/authz/listfile.c @@ -79,8 +79,8 @@ qauthz_list_file_load(QAuthZListFile *fauthz, Error **err= p) =20 v =3D qobject_input_visitor_new(obj); =20 - ret =3D (QAuthZ *)user_creatable_add_type(TYPE_QAUTHZ_LIST, - NULL, pdict, v, errp); + ret =3D QAUTHZ(object_new_with_props_from_qdict_parentless( + TYPE_QAUTHZ_LIST, pdict, v, errp)); =20 cleanup: visit_free(v); diff --git a/include/qom/object_interfaces.h b/include/qom/object_interface= s.h index 02b11a7ef0..e2b8615617 100644 --- a/include/qom/object_interfaces.h +++ b/include/qom/object_interfaces.h @@ -69,24 +69,6 @@ bool user_creatable_complete(UserCreatable *uc, Error **= errp); */ bool user_creatable_can_be_deleted(UserCreatable *uc); =20 -/** - * user_creatable_add_type: - * @type: the object type name - * @id: the unique ID for the object - * @qdict: the object properties - * @v: the visitor - * @errp: if an error occurs, a pointer to an area to store the error - * - * Create an instance of the user creatable object @type, placing - * it in the object composition tree with name @id, initializing - * it with properties from @qdict - * - * Returns: the newly created object or NULL on error - */ -Object *user_creatable_add_type(const char *type, const char *id, - const QDict *qdict, - Visitor *v, Error **errp); - /** * user_creatable_add_qapi: * @options: the object definition diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c index e0a3cd8d0f..7080f85f95 100644 --- a/qom/object_interfaces.c +++ b/qom/object_interfaces.c @@ -44,75 +44,11 @@ bool user_creatable_can_be_deleted(UserCreatable *uc) } } =20 -Object *user_creatable_add_type(const char *type, const char *id, - const QDict *qdict, - Visitor *v, Error **errp) -{ - ERRP_GUARD(); - Object *obj; - ObjectClass *klass; - Error *local_err =3D NULL; - - if (id !=3D NULL && !id_wellformed(id)) { - error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "id", "an identifie= r"); - error_append_hint(errp, "Identifiers consist of letters, digits, " - "'-', '.', '_', starting with a letter.\n"); - return NULL; - } - - klass =3D module_object_class_by_name(type); - if (!klass) { - error_setg(errp, "invalid object type: %s", type); - return NULL; - } - - if (!object_class_dynamic_cast(klass, TYPE_USER_CREATABLE)) { - error_setg(errp, "object type '%s' isn't supported by object-add", - type); - return NULL; - } - - if (object_class_is_abstract(klass)) { - error_setg(errp, "object type '%s' is abstract", type); - return NULL; - } - - assert(qdict); - obj =3D object_new_with_class(klass); - object_set_props_from_qdict(obj, qdict, v, &local_err); - if (local_err) { - goto out; - } - - if (id !=3D NULL) { - object_property_try_add_child(object_get_objects_root(), - id, obj, &local_err); - if (local_err) { - goto out; - } - } - - if (!user_creatable_complete(USER_CREATABLE(obj), &local_err)) { - if (id !=3D NULL) { - object_property_del(object_get_objects_root(), id); - } - goto out; - } -out: - if (local_err) { - error_propagate(errp, local_err); - object_unref(obj); - return NULL; - } - return obj; -} - void user_creatable_add_qapi(ObjectOptions *options, Error **errp) { Visitor *v; QObject *qobj; QDict *props; - Object *obj; =20 v =3D qobject_output_visitor_new(&qobj); visit_type_ObjectOptions(v, NULL, &options, &error_abort); @@ -124,9 +60,9 @@ void user_creatable_add_qapi(ObjectOptions *options, Err= or **errp) qdict_del(props, "id"); =20 v =3D qobject_input_visitor_new(QOBJECT(props)); - obj =3D user_creatable_add_type(ObjectType_str(options->qom_type), - options->id, props, v, errp); - object_unref(obj); + object_new_with_props_from_qdict(ObjectType_str(options->qom_type), + object_get_objects_root(), + options->id, props, v, errp); qobject_unref(qobj); visit_free(v); } diff --git a/tests/unit/check-qom-proplist.c b/tests/unit/check-qom-proplis= t.c index 954c898ce1..89de92b7d9 100644 --- a/tests/unit/check-qom-proplist.c +++ b/tests/unit/check-qom-proplist.c @@ -461,10 +461,9 @@ static void test_dummy_createlist_parentless(void) static bool test_create_obj(QDict *qdict, Error **errp) { Visitor *v =3D qobject_input_visitor_new_keyval(QOBJECT(qdict)); - Object *obj =3D user_creatable_add_type(TYPE_DUMMY, "dev0", qdict, v, = errp); - + Object *obj =3D object_new_with_props_from_qdict( + TYPE_DUMMY, object_get_objects_root(), "dev0", qdict, v, errp); visit_free(v); - object_unref(obj); return !!obj; } =20 --=20 2.54.0