From nobody Fri Dec 12 14:06:21 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=1765274117; cv=none; d=zohomail.com; s=zohoarc; b=W2/0WJQmUa1chgGWUYAhlvvLxLRWuf7f9Jlz2Ujpt5TIT5kM1adnSLgEEM9PSUmTeo/QmJ/aFGWLMMvyRg5aOUeuR915uA0ClNtZhPSSG9ohqgJrYinnh7ejige47anmWeHhfWiTZJBEwV//FGbl48GZADV3HlNde6ePA43VRFg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765274117; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner: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=KEseQNrC368flQLUz1nsuk1q42LlyAekCxgyXLIpTIQ=; b=FxRy7jxoBXk/j5DFUSITJ44yc8OSSK6Vh6X6q0punbFwq0M7yA37mRClJd9UI3nP6N2DCFbqGuANbNhQ9nTcQ1jhEAAZGfAtzauKadSYPS0Bb4LjyJZkD9YF8qpw48CHW6aL12xmXu9ldDKKCzViBrpLgfGmVFrO5LNqqnqEyvs= 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 1765274117263876.0723771243104; Tue, 9 Dec 2025 01:55:17 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 77EEF43EF3; Tue, 9 Dec 2025 04:55:16 -0500 (EST) Received: from [172.19.199.80] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id C70B34421D; Tue, 9 Dec 2025 04:48:33 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 97BE441882; Tue, 9 Dec 2025 04:46:38 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id B039241966 for ; Tue, 9 Dec 2025 04:46:23 -0500 (EST) 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-226-jwWkGPSXOxGVyTSkK8f5mw-1; Tue, 09 Dec 2025 04:46:21 -0500 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 CEEA91956053 for ; Tue, 9 Dec 2025 09:46:20 +0000 (UTC) Received: from speedmetal.openshiftapps.com (unknown [10.44.22.4]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 0C3C31956095 for ; Tue, 9 Dec 2025 09:46:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765273583; 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=KEseQNrC368flQLUz1nsuk1q42LlyAekCxgyXLIpTIQ=; b=QpyOfLD464o51nID1qps/WCFsLi8z835dLJnTFmfJcU7USMunl5K3Ov8pZ2a8u3Vjn7fpq jCJcO+7VuvU3cwXuUpY+4P362pTi/9WevRHV2Yu9DyqXCYSROeGZyUoEyD8UqDxjYVXF4T znxA75xYsVZgCPC+5+sYBKIGKzP/xuw= X-MC-Unique: jwWkGPSXOxGVyTSkK8f5mw-1 X-Mimecast-MFC-AGG-ID: jwWkGPSXOxGVyTSkK8f5mw_1765273580 To: devel@lists.libvirt.org Subject: [PATCH 8/9] qemuMigrationSrcToFile: Don't cross-contaminate 'flags' variable Date: Tue, 9 Dec 2025 10:46:08 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: QsJXeetxQBPezeFfZnmSGejabQJ0Db04lRz0w89xUQo_1765273580 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: A4PNXY7YILF73PA36QAMWO4PBSWIX4C4 X-Message-ID-Hash: A4PNXY7YILF73PA36QAMWO4PBSWIX4C4 X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1765274118411158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa The meaning of 'flags' is context dependant. 'qemuMigrationSrcToFile' expects 'virDomainSaveRestoreFlags' rather than migration flags which is not expected based on the location of the function. Why this is wrong is clearly visible in 'doCoreDump' which passes in 'dump_flags' which are actually 'virDomainCoreDumpFlags' and the values are different: VIR_DUMP_BYPASS_CACHE =3D (1 << 2) VIR_DOMAIN_SAVE_BYPASS_CACHE =3D 1 << 0 Since it checks only for VIR_DOMAIN_SAVE_BYPASS_CACHE pass it in as a boolean instead. Signed-off-by: Peter Krempa --- src/qemu/qemu_driver.c | 4 +++- src/qemu/qemu_migration.c | 8 ++++---- src/qemu/qemu_migration.h | 2 +- src/qemu/qemu_saveimage.c | 4 +++- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index d88c0833ad..cca9d06786 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -3137,7 +3137,9 @@ doCoreDump(virQEMUDriver *driver, goto cleanup; if (qemuMigrationSrcToFile(driver, vm, path, &fd, compressor, - dump_params, dump_flags, VIR_ASYNC_JOB_= DUMP) < 0) + dump_params, + (dump_flags & VIR_DUMP_BYPASS_CACHE), + VIR_ASYNC_JOB_DUMP) < 0) goto cleanup; } diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 4f9b649b63..1371742529 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -7210,7 +7210,7 @@ qemuMigrationSrcToSparseFile(virQEMUDriver *driver, virDomainObj *vm, const char *path, int *fd, - unsigned int flags, + bool bypassCache, virDomainAsyncJob asyncJob) { g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); @@ -7222,7 +7222,7 @@ qemuMigrationSrcToSparseFile(virQEMUDriver *driver, /* When using directio with mapped-ram, qemu needs two fds. One with * O_DIRECT set writing the memory, and another without it set for * writing small bits of unaligned state. */ - if ((flags & VIR_DOMAIN_SAVE_BYPASS_CACHE)) { + if (bypassCache) { directFlag =3D virFileDirectFdFlag(); if (directFlag < 0) { virReportError(VIR_ERR_OPERATION_FAILED, "%s", @@ -7259,7 +7259,7 @@ qemuMigrationSrcToFile(virQEMUDriver *driver, virDoma= inObj *vm, int *fd, virCommand *compressor, qemuMigrationParams *migParams, - unsigned int flags, + bool bypassCache, virDomainAsyncJob asyncJob) { qemuDomainObjPrivate *priv =3D vm->privateData; @@ -7293,7 +7293,7 @@ qemuMigrationSrcToFile(virQEMUDriver *driver, virDoma= inObj *vm, if (migParams && qemuMigrationParamsCapEnabled(migParams, QEMU_MIGRATION_CAP_MAPPED= _RAM)) - rc =3D qemuMigrationSrcToSparseFile(driver, vm, path, fd, flags, a= syncJob); + rc =3D qemuMigrationSrcToSparseFile(driver, vm, path, fd, bypassCa= che, asyncJob); else rc =3D qemuMigrationSrcToLegacyFile(driver, vm, *fd, compressor, a= syncJob); diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h index 50910ecb1f..51341f453d 100644 --- a/src/qemu/qemu_migration.h +++ b/src/qemu/qemu_migration.h @@ -244,7 +244,7 @@ qemuMigrationSrcToFile(virQEMUDriver *driver, int *fd, virCommand *compressor, qemuMigrationParams *migParams, - unsigned int flags, + bool bypassCache, virDomainAsyncJob asyncJob) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) G_GNUC_WARN_UNUSED_RESULT; diff --git a/src/qemu/qemu_saveimage.c b/src/qemu/qemu_saveimage.c index 58a3f96575..1b68a09595 100644 --- a/src/qemu/qemu_saveimage.c +++ b/src/qemu/qemu_saveimage.c @@ -501,7 +501,9 @@ qemuSaveImageCreate(virQEMUDriver *driver, goto cleanup; /* Perform the migration */ - if (qemuMigrationSrcToFile(driver, vm, path, &fd, compressor, savePara= ms, flags, asyncJob) < 0) + if (qemuMigrationSrcToFile(driver, vm, path, &fd, compressor, savePara= ms, + (flags & VIR_DOMAIN_SAVE_BYPASS_CACHE), + asyncJob) < 0) goto cleanup; /* Touch up file header to mark image complete. */ --=20 2.52.0