From nobody Tue Dec 16 09:01:37 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1742512113; cv=none; d=zohomail.com; s=zohoarc; b=LbIRn1YbGV3hwxnW8GwrOTpcoCRvxzGmBbfJQKa0T2aqVDvIxR4YN226QWEjlnYwlxJxi+JUAs1fhsRwREiaXHLIrCT33zY6QhyfdkywTFXTRKmuIDEbAARqMf4MvpV/0rb4FqBCG0yKOzO17cblpkImBl/E80Uduw7WlST+M4w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1742512113; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=p9+JK2XHMD5EwzteQARxhOx2nqK9flmrNki0LlQWPBg=; b=oHlbn4ItWBfRVyy+foBI9WF6P5tSO2lfA0rX59EqC5FYwJ2E0R7s8yyHzTes2ybAUXHDTJ/7ZQIk9uYk10fV8dkL16G2Sl5Bh1wmzC5ChftDkKV0owK6shc09Tf/OAhXWPd0Il2V/AP0zdZAs20WxxQGL+yhptF994KLScgBLQo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1742512113555589.0833798966318; Thu, 20 Mar 2025 16:08:33 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 7F8F01780; Thu, 20 Mar 2025 19:08:32 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 41E161629; Thu, 20 Mar 2025 19:07:29 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id F1DF615C5; Thu, 20 Mar 2025 19:07:23 -0400 (EDT) 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 6B3FD15B1 for ; Thu, 20 Mar 2025 19:07:23 -0400 (EDT) Received: from mx-prod-mc-02.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-140-T4X9oVkUNo6macSS4NUDvg-1; Thu, 20 Mar 2025 19:07:21 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (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-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 22FE919560B1 for ; Thu, 20 Mar 2025 23:07:21 +0000 (UTC) Received: from antique-work.lan (unknown [10.45.226.90]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 3E15C1800370 for ; Thu, 20 Mar 2025 23:07:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1742512043; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=urh7IDOpFNbNq4mgsdyqbMRDGF2GISVOXnu627sVso8=; b=YYq5CjvD84N404qskPvEIfJ+b5KMsJZGk+aWvai8HLg9bMRpH33MJ29BJ4FowmIa5GQs3x jdvoNgWZRlJMYxbW+zRsZiyaKRZjas8wqPxvwK5iSrH8vzakGA2lSSrED+ARCz74EewVdN +Gdk2Oz7QrCffgK4izdhhFcFgZMDX+E= X-MC-Unique: T4X9oVkUNo6macSS4NUDvg-1 X-Mimecast-MFC-AGG-ID: T4X9oVkUNo6macSS4NUDvg_1742512041 To: devel@lists.libvirt.org Subject: [libvirt PATCH 3/6] qemu: remove VIR_DOMAIN_SAVE_PARALLEL flag Date: Fri, 21 Mar 2025 00:07:11 +0100 Message-ID: <575aeb916b11df57307ab29cd54af4f10cf105f7.1742511952.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: LzWtO6gpaT14RXCdSzaes19fWoKIKesavGyFgs-N7Pk_1742512041 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: EPFPQTGDD6PHICSC3MFREBADCVNQVBK6 X-Message-ID-Hash: EPFPQTGDD6PHICSC3MFREBADCVNQVBK6 X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1742512115987019100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Pavel Hrdina There is no need to use extra flag in addition to the new "parallel.channels" param. Using the flag without param would result in using uninitialized variable. Fixing it would result in error that parallel channels cannot be less then 1 or setting 1 as default. Using the param without the flag is ignored. Signed-off-by: Pavel Hrdina --- include/libvirt/libvirt-domain.h | 1 - src/qemu/qemu_driver.c | 6 ++---- src/qemu/qemu_migration_params.c | 34 +++++++++++++++----------------- tools/virsh-domain.c | 22 ++++++++------------- 4 files changed, 26 insertions(+), 37 deletions(-) diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-dom= ain.h index 233bfd927a..6e11baa3d3 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -1655,7 +1655,6 @@ typedef enum { VIR_DOMAIN_SAVE_RUNNING =3D 1 << 1, /* Favor running over paused = (Since: 0.9.5) */ VIR_DOMAIN_SAVE_PAUSED =3D 1 << 2, /* Favor paused over running = (Since: 0.9.5) */ VIR_DOMAIN_SAVE_RESET_NVRAM =3D 1 << 3, /* Re-initialize NVRAM from t= emplate (Since: 8.1.0) */ - VIR_DOMAIN_SAVE_PARALLEL =3D 1 << 4, /* Save and restore using par= allel channels (Since: 10.6.0) */ } virDomainSaveRestoreFlags; =20 int virDomainSave (virDomainPtr domain, diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 21df94961b..3cf21380ed 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2822,8 +2822,7 @@ qemuDomainSaveParams(virDomainPtr dom, =20 virCheckFlags(VIR_DOMAIN_SAVE_BYPASS_CACHE | VIR_DOMAIN_SAVE_RUNNING | - VIR_DOMAIN_SAVE_PAUSED | - VIR_DOMAIN_SAVE_PARALLEL, -1); + VIR_DOMAIN_SAVE_PAUSED, -1); =20 if (virTypedParamsValidate(params, nparams, VIR_DOMAIN_SAVE_PARAM_FILE, @@ -5762,8 +5761,7 @@ qemuDomainRestoreInternal(virConnectPtr conn, virCheckFlags(VIR_DOMAIN_SAVE_BYPASS_CACHE | VIR_DOMAIN_SAVE_RUNNING | VIR_DOMAIN_SAVE_PAUSED | - VIR_DOMAIN_SAVE_RESET_NVRAM | - VIR_DOMAIN_SAVE_PARALLEL, -1); + VIR_DOMAIN_SAVE_RESET_NVRAM, -1); =20 if (flags & VIR_DOMAIN_SAVE_RESET_NVRAM) reset_nvram =3D true; diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_par= ams.c index b696b0d13e..17d08f4aa5 100644 --- a/src/qemu/qemu_migration_params.c +++ b/src/qemu/qemu_migration_params.c @@ -803,11 +803,20 @@ qemuMigrationParamsForSave(virTypedParameterPtr param= s, unsigned int flags) { g_autoptr(qemuMigrationParams) saveParams =3D NULL; + int nchannels =3D 0; + int rv; =20 - if (flags & VIR_DOMAIN_SAVE_PARALLEL && !sparse) { + if ((rv =3D virTypedParamsGetInt(params, nparams, + VIR_DOMAIN_SAVE_PARAM_PARALLEL_CHANNELS, + &nchannels)) < 0) + return NULL; + + if (rv =3D=3D 1 && !sparse) { virReportError(VIR_ERR_INVALID_ARG, "%s", _("Parallel save is only supported with the 'sparse= ' save image format")); return NULL; + } else if (rv =3D=3D 0) { + nchannels =3D 1; } =20 if (!(saveParams =3D qemuMigrationParamsNew())) @@ -819,24 +828,13 @@ qemuMigrationParamsForSave(virTypedParameterPtr param= s, if (virBitmapSetBit(saveParams->caps, QEMU_MIGRATION_CAP_MULTIFD) = < 0) return NULL; =20 - if (flags & VIR_DOMAIN_SAVE_PARALLEL) { - int nchannels; - - if (params && virTypedParamsGetInt(params, nparams, - VIR_DOMAIN_SAVE_PARAM_PARAL= LEL_CHANNELS, - &nchannels) < 0) - return NULL; - - if (nchannels < 1) { - virReportError(VIR_ERR_INVALID_ARG, "%s", - _("number of parallel save channels cannot = be less than 1")); - return NULL; - } - - saveParams->params[QEMU_MIGRATION_PARAM_MULTIFD_CHANNELS].valu= e.i =3D nchannels; - } else { - saveParams->params[QEMU_MIGRATION_PARAM_MULTIFD_CHANNELS].valu= e.i =3D 1; + if (nchannels < 1) { + virReportError(VIR_ERR_INVALID_ARG, "%s", + _("number of parallel save channels cannot be less = than 1")); + return NULL; } + + saveParams->params[QEMU_MIGRATION_PARAM_MULTIFD_CHANNELS].value.i = =3D nchannels; saveParams->params[QEMU_MIGRATION_PARAM_MULTIFD_CHANNELS].set =3D = true; =20 if (flags & VIR_DOMAIN_SAVE_BYPASS_CACHE) { diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index 7adf6c16fa..56ddf4d701 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -4597,13 +4597,10 @@ doSave(void *opaque) =20 if ((rc =3D vshCommandOptInt(ctl, cmd, "parallel-channels", &nchannels= )) < 0) goto out; - if (rc =3D=3D 1) { - if (virTypedParamsAddInt(¶ms, &nparams, &maxparams, - VIR_DOMAIN_SAVE_PARAM_PARALLEL_CHANNELS, = nchannels) < 0) - goto out; - - flags |=3D VIR_DOMAIN_SAVE_PARALLEL; - } + if (rc =3D=3D 1 && + virTypedParamsAddInt(¶ms, &nparams, &maxparams, + VIR_DOMAIN_SAVE_PARAM_PARALLEL_CHANNELS, ncha= nnels) < 0) + goto out; =20 if (vshCommandOptString(ctl, cmd, "xml", &xmlfile) < 0) goto out; @@ -5728,13 +5725,10 @@ cmdRestore(vshControl *ctl, const vshCmd *cmd) =20 if ((rc =3D vshCommandOptInt(ctl, cmd, "parallel-channels", &nchannels= )) < 0) return false; - if (rc =3D=3D 1) { - if (virTypedParamsAddInt(¶ms, &nparams, &maxparams, - VIR_DOMAIN_SAVE_PARAM_PARALLEL_CHANNELS, = nchannels) < 0) - return false; - - flags |=3D VIR_DOMAIN_SAVE_PARALLEL; - } + if (rc =3D=3D 1 && + virTypedParamsAddInt(¶ms, &nparams, &maxparams, + VIR_DOMAIN_SAVE_PARAM_PARALLEL_CHANNELS, ncha= nnels) < 0) + return false; =20 if (flags || xml) { rc =3D virDomainRestoreParams(priv->conn, params, nparams, flags); --=20 2.48.1