1 Star 0 Fork 71

梓瑶/libvirt

forked from src-openEuler/libvirt 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
migration-migration-pin-add-some-migration-multiFd-p.patch 4.69 KB
一键复制 编辑 原始数据 按行查看 历史
From 36295c0cc955fee9afc7b0fb70822c8e1e030b87 Mon Sep 17 00:00:00 2001
From: zhengchuan <zhengchuan@huawei.com>
Date: Wed, 14 Dec 2022 11:07:58 +0800
Subject: [PATCH 1/6] migration/migration-pin:add some migration/multiFd params
add migration/multiFd params.
Signed-off-by:zhengchuan<zhengchuan@huawei.com>
---
src/conf/domain_conf.c | 9 +++++++++
src/conf/domain_conf.h | 12 ++++++++++++
src/libvirt_private.syms | 1 +
src/qemu/qemu_domain.c | 6 ++++++
src/qemu/qemu_domain.h | 4 ++++
src/util/vircgroup.c | 3 +++
src/util/vircgroup.h | 1 +
7 files changed, 36 insertions(+)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 8b1ca76d39..1689d92c51 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -32617,3 +32617,12 @@ virHostdevIsVFIODevice(const virDomainHostdevDef *hostdev)
hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI &&
hostdev->source.subsys.u.pci.backend == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO;
}
+
+void
+virDomainMigrationIDDefFree(virDomainMigrationIDDefPtr def)
+{
+ if (!def)
+ return;
+ virBitmapFree(def->cpumask);
+ VIR_FREE(def);
+}
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index c0a323d465..98fa323679 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -27,6 +27,7 @@
#include <libxml/xpath.h>
#include "internal.h"
+#include "viralloc.h"
#include "virconftypes.h"
#include "capabilities.h"
#include "virstorageencryption.h"
@@ -3775,3 +3776,14 @@ virHostdevIsMdevDevice(const virDomainHostdevDef *hostdev)
bool
virHostdevIsVFIODevice(const virDomainHostdevDef *hostdev)
ATTRIBUTE_NONNULL(1);
+
+typedef struct _virDomainMigrationIDDef virDomainMigrationIDDef;
+typedef virDomainMigrationIDDef *virDomainMigrationIDDefPtr;
+struct _virDomainMigrationIDDef {
+ bool autofill;
+ int thread_id;
+ virBitmapPtr cpumask;
+ virDomainThreadSchedParam sched;
+};
+
+void virDomainMigrationIDDefFree(virDomainMigrationIDDefPtr def);
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 14ad7ecde3..f30eb7ffb5 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -492,6 +492,7 @@ virDomainMemoryModelTypeToString;
virDomainMemoryRemove;
virDomainMemorySourceTypeFromString;
virDomainMemorySourceTypeToString;
+virDomainMigrationIDDefFree;
virDomainNetAllocateActualDevice;
virDomainNetAppendIPAddress;
virDomainNetARPInterfaces;
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index b2ac1d37cc..71d034fa42 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -2322,6 +2322,12 @@ qemuDomainObjPrivateFree(void *data)
qemuDomainObjFreeJob(priv);
VIR_FREE(priv->lockState);
VIR_FREE(priv->origname);
+ VIR_FREE(priv->migrationPids);
+ virBitmapFree(priv->pcpumap);
+
+ VIR_FREE(priv->migrationMultiFdPids);
+ priv->migrationMultiFdPids = NULL;
+ priv->migrationMultiFdCount = 0;
virChrdevFree(priv->devs);
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index 164fb36f0c..38a842ebf6 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -332,8 +332,11 @@ struct _qemuDomainObjPrivate {
unsigned long migMaxBandwidth;
char *origname;
int nbdPort; /* Port used for migration with NBD */
+ char *migrationPids;
unsigned short migrationPort;
int preMigrationState;
+ char *migrationMultiFdPids;
+ unsigned int migrationMultiFdCount;
virChrdevsPtr devs;
@@ -354,6 +357,7 @@ struct _qemuDomainObjPrivate {
/* Bitmaps below hold data from the auto NUMA feature */
virBitmapPtr autoNodeset;
virBitmapPtr autoCpuset;
+ virBitmapPtr pcpumap;
bool signalIOError; /* true if the domain condition should be signalled on
I/O error */
diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
index f52a8cc843..b075dd1ecb 100644
--- a/src/util/vircgroup.c
+++ b/src/util/vircgroup.c
@@ -969,6 +969,9 @@ virCgroupNewThread(virCgroupPtr domain,
case VIR_CGROUP_THREAD_IOTHREAD:
name = g_strdup_printf("iothread%d", id);
break;
+ case VIR_CGROUP_THREAD_MIGRATION_THREAD:
+ name = g_strdup_printf("migthread%d", id);
+ break;
case VIR_CGROUP_THREAD_LAST:
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unexpected name value %d"), nameval);
diff --git a/src/util/vircgroup.h b/src/util/vircgroup.h
index 1dcd0688f1..5639f36c1f 100644
--- a/src/util/vircgroup.h
+++ b/src/util/vircgroup.h
@@ -54,6 +54,7 @@ typedef enum {
VIR_CGROUP_THREAD_VCPU = 0,
VIR_CGROUP_THREAD_EMULATOR,
VIR_CGROUP_THREAD_IOTHREAD,
+ VIR_CGROUP_THREAD_MIGRATION_THREAD,
VIR_CGROUP_THREAD_LAST
} virCgroupThreadName;
--
2.25.1
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/ziyao233/libvirt.git
git@gitee.com:ziyao233/libvirt.git
ziyao233
libvirt
libvirt
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385