From nobody Fri Dec 19 20:16:46 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=1738953630; cv=none; d=zohomail.com; s=zohoarc; b=k4bC9eKoH30hhIS0nZitMR+U48yAlZj59SxoQmetCEo4G/GoHa0oDoBtYVLSNhmOkpdInJrruVPnJQ+Nl4l4Jz9Jrb12ilh3ECT+z/AMm81XWIMpJ4wKXtOK90XheU9CMD/woeBOtfFCeDjj7RFWx1NKCRUcra8dm0/UW+OZpGk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1738953630; 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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id; bh=cu5LQJAwWWOsI/0VrXPUtUcjzIz/OFkRh75uw1/xMZc=; b=O9O/XYR/RL4jn2HqHyg0YSdycZsKKMIxTCZb3EpFfE/hblnj22RwHGmuIoISQROHqgjKNnhD7zroqVo4TtCLyteRyS6eH9bWy9TBhXVWobGjhYlLC3EUZ8qEVb0OMyoGXYHQfuMdNICRwJhauPuMqJ6LIfCL7HC5L92BgoSHBKc= 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 1738953630184357.9582733962136; Fri, 7 Feb 2025 10:40:30 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 8F2C814F3; Fri, 7 Feb 2025 13:40:29 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 7D8A4157B; Fri, 7 Feb 2025 13:38:12 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id DF9AF16E7; Fri, 7 Feb 2025 13:38:07 -0500 (EST) Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (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 762B1154F for ; Fri, 7 Feb 2025 13:37:47 -0500 (EST) Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-43675b1155bso26080075e9.2 for ; Fri, 07 Feb 2025 10:37:47 -0800 (PST) Received: from localhost (205-201-32-8.scinternet.net. [205.201.32.8]) by smtp.gmail.com with UTF8SMTPSA id d9443c01a7336-21f3687edbesm33926975ad.177.2025.02.07.10.37.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Feb 2025 10:37:45 -0800 (PST) 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=suse.com; s=google; t=1738953466; x=1739558266; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DJcyg9tCxQl9yVB+VcCfEzMxGb4HyCojPz9WvnV8YEI=; b=efD4YATA8Ko6fUm30cN5qIXGBaxL2BZFhXmIgAYDr4wN4fsA+0NtCXzemasIhEDRIV mMIp4SYre03KpbHn0vUyIfx+ol6R14vwdRAVxJsugvAImgKQfBrzWcdpjbyILPO4cu11 CZ82zt1jgqBmFN0qpzEu+5EWDMIN06qLkAlRjmH8eK/hzEXBwEtmDMGqrXBLSVv1rEOU WztiXPFA6xiJWPvd2qIpIaPWYgh9BaUQNW38c4qEmUEvASlFFMDMSJXaJpTcL1VO0rBN SM+q688UKq8wrEn7csGJTXBRLxI0jO7tY5JwaI+/4fATUUJLDtDR03e5Qj4tGS14/pO/ Jhsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738953466; x=1739558266; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DJcyg9tCxQl9yVB+VcCfEzMxGb4HyCojPz9WvnV8YEI=; b=l8PS965P3ofhv679qmLSM7ISSsFZxWMwsDSYSTP0iDS4u+h+XA83LlrceRoLoUw2Li kS9qysIi8M21gqkhZc+k4HCABTTbXuLWxwy1gL0gp/aKCz07rGFiCVyIFvat8fGrbGmJ gUmY4pUhv26/eJu/P8HEUseY9ywTQ41Q7N484KTlp7/+zbIuSdpvtGlumnGdPu4oSqHQ N0an1Plk6diYFg6u1fPTwl8i00VTWFR6kjNJGbwZQ9///IwHZ6U0MA1EAD3qeQbmjhTI d3bPwESQe3k7sbkeHQEM8eB6TpFBRlMqbCEAmi0rcC8T3O5GXeM3y5EFePiBjy95i+CD 4S9Q== X-Gm-Message-State: AOJu0YyRjdE5XycGVzWSfsBhyOBiyyYJO/8BacIk4WNXRgik4Mh7FweQ ZfMVcU6pLqMI/Uajbl5/nfxKowWaW1s80zxB3ctFt2HYnRhZQooBaFl9+mACFQL+muqIBYXdIXf q X-Gm-Gg: ASbGncvOzJFq8bFICjkTReK5Zs0ahJq0MlcodyR8MvNWf4PEV5wVeZCzA3Qf6N06IN5 wJcCWhQPy2PiCST9KVJ3fYp2ttXzoh+zTv++xnaFDQpLwn7lQSpsDMc4Zv0NZDkaaAKOikZgLFp JQI6FqNQTUMeiHWnT/ZZdn5dXdR7IegDHnPpHzGcmsuTgbe2ZA1WtwHYHbcZ/8KCUMy7MVebgf0 hPFEVMLxzduR4VfRlu+x7qs+7kAl78iIgqtZ8T+fJOSEWPr4+tKCwxcvGmUiEMeCWN890mgFU5l x7OJDtPO+23zDHropgWAETsK1HgL8OkXMQ== X-Google-Smtp-Source: AGHT+IFNLBOuGcolh8K+eLvaBKPm9SuXuXtinWrIiktMPva1TnAciHE4ARBTRP6i+HcVCFKLtPvBqQ== X-Received: by 2002:a05:6000:400f:b0:385:fc70:7f6 with SMTP id ffacd0b85a97d-38dc8d985c8mr2987158f8f.7.1738953466179; Fri, 07 Feb 2025 10:37:46 -0800 (PST) To: devel@lists.libvirt.org Subject: [PATCH V3 06/19] qemu: Add function to get migration params for save Date: Fri, 7 Feb 2025 11:27:17 -0700 Message-ID: <20250207183730.21686-7-jfehlig@suse.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250207183730.21686-1-jfehlig@suse.com> References: <20250207183730.21686-1-jfehlig@suse.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: XFGQWJ34J75HJFHIQZIGFT2FSPOT7IRQ X-Message-ID-Hash: XFGQWJ34J75HJFHIQZIGFT2FSPOT7IRQ X-MailFrom: jfehlig@suse.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: farosas@suse.de 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: Jim Fehlig via Devel Reply-To: Jim Fehlig X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1738953632055019000 Content-Type: text/plain; charset="utf-8" Introduce qemuMigrationParamsForSave() to create a qemuMigrationParams object initialized with appropriate migration capabilities and parameters for a save operation. Note that mapped-ram capability also requires the multifd capability. For now, the number of multifd channels is set to 1. Future work to support parallel save/restore can set the number of channels to a user-specified value. Signed-off-by: Jim Fehlig Reviewed-by: Daniel P. Berrang=C3=A9 --- src/qemu/qemu_migration.c | 2 +- src/qemu/qemu_migration_params.c | 21 +++++++++++++++++++++ src/qemu/qemu_migration_params.h | 3 +++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 53bbbee629..4efc03fc00 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -7090,7 +7090,7 @@ qemuMigrationSrcToFile(virQEMUDriver *driver, virDoma= inObj *vm, =20 /* Increase migration bandwidth to unlimited since target is a file. * Failure to change migration speed is not fatal. */ - if (!(migParams =3D qemuMigrationParamsNew())) + if (!(migParams =3D qemuMigrationParamsForSave(false))) return -1; =20 if (qemuMigrationParamsSetULL(migParams, diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_par= ams.c index 4fc9199f1c..d48cdd5506 100644 --- a/src/qemu/qemu_migration_params.c +++ b/src/qemu/qemu_migration_params.c @@ -792,6 +792,27 @@ qemuMigrationParamsFromFlags(virTypedParameterPtr para= ms, } =20 =20 +qemuMigrationParams * +qemuMigrationParamsForSave(bool sparse) +{ + g_autoptr(qemuMigrationParams) saveParams =3D NULL; + + if (!(saveParams =3D qemuMigrationParamsNew())) + return NULL; + + if (sparse) { + if (virBitmapSetBit(saveParams->caps, QEMU_MIGRATION_CAP_MAPPED_RA= M) < 0) + return NULL; + if (virBitmapSetBit(saveParams->caps, QEMU_MIGRATION_CAP_MULTIFD) = < 0) + return NULL; + saveParams->params[QEMU_MIGRATION_PARAM_MULTIFD_CHANNELS].value.i = =3D 1; + saveParams->params[QEMU_MIGRATION_PARAM_MULTIFD_CHANNELS].set =3D = true; + } + + return g_steal_pointer(&saveParams); +} + + int qemuMigrationParamsDump(qemuMigrationParams *migParams, virTypedParameterPtr *params, diff --git a/src/qemu/qemu_migration_params.h b/src/qemu/qemu_migration_par= ams.h index 2379950ce9..88a1bc1a66 100644 --- a/src/qemu/qemu_migration_params.h +++ b/src/qemu/qemu_migration_params.h @@ -87,6 +87,9 @@ qemuMigrationParamsFromFlags(virTypedParameterPtr params, unsigned int flags, qemuMigrationParty party); =20 +qemuMigrationParams * +qemuMigrationParamsForSave(bool sparse); + int qemuMigrationParamsDump(qemuMigrationParams *migParams, virTypedParameterPtr *params, --=20 2.43.0