From nobody Fri May 17 09:18:49 2024 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; spf=none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1704300047221450.18067307963804; Wed, 3 Jan 2024 08:40:47 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 00DE91777; Wed, 3 Jan 2024 11:40:45 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 3BC35170B; Wed, 3 Jan 2024 11:39:37 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id D4E4716FB; Wed, 3 Jan 2024 11:39:33 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id C965916E6 for ; Wed, 3 Jan 2024 11:39:30 -0500 (EST) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-678-qP4x8wnEPYab6LOnA32KiA-1; Wed, 03 Jan 2024 11:39:29 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (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 mimecast-mx02.redhat.com (Postfix) with ESMTPS id DE72285A58C for ; Wed, 3 Jan 2024 16:39:28 +0000 (UTC) Received: from toolbox.redhat.com (unknown [10.42.28.203]) by smtp.corp.redhat.com (Postfix) with ESMTP id D2FA53C25; Wed, 3 Jan 2024 16:39:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.4 X-MC-Unique: qP4x8wnEPYab6LOnA32KiA-1 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: devel@lists.libvirt.org Subject: [PATCH] qemu: tighten semantics of 'size' when resizing block devices Date: Wed, 3 Jan 2024 16:39:26 +0000 Message-ID: <20240103163926.44476-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Message-ID-Hash: 3ISOJ6ZGE6GJBVMLYN6WHHSRZDPGWYTN X-Message-ID-Hash: 3ISOJ6ZGE6GJBVMLYN6WHHSRZDPGWYTN X-MailFrom: berrange@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: Peter Krempa , =?UTF-8?q?J=C3=A1n=20Tomko?= X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1704300048791100001 When VIR_DOMAIN_BLOCK_RESIZE_CAPACITY is set, the 'size' parameter is currently ignored. Since applications must none the less pass a value for this parameter, it is preferrable to declare some explicit semantics for it. This declare that the parameter must be 0, or the exact size of the underlying block device. The latter gives the management application the ability to sanity check that the block device size matches what they think it should be. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Peter Krempa --- src/libvirt-domain.c | 5 +++-- src/qemu/qemu_driver.c | 9 ++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 94e5672ed8..83abad251e 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -6389,8 +6389,9 @@ virDomainBlockPeek(virDomainPtr dom, * to the next alignment boundary. * * If @flag contains VIR_DOMAIN_BLOCK_RESIZE_CAPACITY (since 10.0.0) the - * hypervisor will resize the guest block device to fully fill the source, - * ignoring @size. This is possible only for image formats with no metadata + * hypervisor will resize the guest block device to fully fill the source. + * @size must be either set to zero, or to the exact size of the block + * device source. This is possible only for image formats with no metadata * ('raw') and for source devices with limited capacity such as block devi= ces. * * The @disk parameter is either an unambiguous source name of the diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 49bc4a624d..8e529f97b5 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -9325,7 +9325,14 @@ qemuDomainBlockResize(virDomainPtr dom, goto endjob; } =20 - size =3D disk->src->physical; + if (size =3D=3D 0) { + size =3D disk->src->physical; + } else if (size !=3D disk->src->physical) { + virReportError(VIR_ERR_INVALID_ARG, + _("block resize to full capacity %llu but valid= ate size is %llu"), + size, disk->src->physical); + goto endjob; + } } =20 /* qcow2 and qed must be sized on 512 byte blocks/sectors, --=20 2.43.0 _______________________________________________ Devel mailing list -- devel@lists.libvirt.org To unsubscribe send an email to devel-leave@lists.libvirt.org