1 Star 0 Fork 70

周正亮/libvirt

forked from src-openEuler/libvirt 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
hotpatch-introduce-hotpatch-async-job-flag.patch 5.33 KB
一键复制 编辑 原始数据 按行查看 历史
Jiabo Feng 提交于 2024-04-10 21:35 . libvirt update to version 9.10.0-5:
From 180e19162083fb74e9e9cbc676ce42611bb2e496 Mon Sep 17 00:00:00 2001
From: AlexChen <alex.chen@huawei.com>
Date: Tue, 19 Oct 2021 22:41:24 +0800
Subject: [PATCH] hotpatch: introduce hotpatch async job flag
Signed-off-by: Hao Wang <wanghao232@huawei.com>
Signed-off-by: Bihong Yu <yubihong@huawei.com>
Signed-off-by: AlexChen <alex.chen@huawei.com>
---
include/libvirt/libvirt-domain.h | 1 +
src/conf/virdomainjob.c | 1 +
src/conf/virdomainjob.h | 1 +
src/qemu/qemu_domainjob.c | 2 ++
src/qemu/qemu_driver.c | 14 +++++++++++++-
src/qemu/qemu_migration.c | 2 ++
src/qemu/qemu_process.c | 1 +
tools/virsh-domain.c | 1 +
8 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
index e786ecfab2..96e62deac3 100644
--- a/include/libvirt/libvirt-domain.h
+++ b/include/libvirt/libvirt-domain.h
@@ -4201,6 +4201,7 @@ typedef enum {
VIR_DOMAIN_JOB_OPERATION_DUMP = 8, /* (Since: 3.3.0) */
VIR_DOMAIN_JOB_OPERATION_BACKUP = 9, /* (Since: 6.0.0) */
VIR_DOMAIN_JOB_OPERATION_SNAPSHOT_DELETE = 10, /* (Since: 9.0.0) */
+ VIR_DOMAIN_JOB_OPERATION_HOTPATCH = 11, /* (Since: 6.2.0) */
# ifdef VIR_ENUM_SENTINELS
VIR_DOMAIN_JOB_OPERATION_LAST /* (Since: 3.3.0) */
diff --git a/src/conf/virdomainjob.c b/src/conf/virdomainjob.c
index 38f08f1d18..d21fc653a0 100644
--- a/src/conf/virdomainjob.c
+++ b/src/conf/virdomainjob.c
@@ -51,6 +51,7 @@ VIR_ENUM_IMPL(virDomainAsyncJob,
"snapshot",
"start",
"backup",
+ "hotpatch",
);
virDomainJobData *
diff --git a/src/conf/virdomainjob.h b/src/conf/virdomainjob.h
index 0d62bab287..d0f632edad 100644
--- a/src/conf/virdomainjob.h
+++ b/src/conf/virdomainjob.h
@@ -75,6 +75,7 @@ typedef enum {
VIR_ASYNC_JOB_SNAPSHOT,
VIR_ASYNC_JOB_START,
VIR_ASYNC_JOB_BACKUP,
+ VIR_ASYNC_JOB_HOTPATCH,
VIR_ASYNC_JOB_LAST
} virDomainAsyncJob;
diff --git a/src/qemu/qemu_domainjob.c b/src/qemu/qemu_domainjob.c
index 245e51f14b..c9753c4f2b 100644
--- a/src/qemu/qemu_domainjob.c
+++ b/src/qemu/qemu_domainjob.c
@@ -56,6 +56,7 @@ qemuDomainAsyncJobPhaseToString(virDomainAsyncJob job,
case VIR_ASYNC_JOB_START:
case VIR_ASYNC_JOB_NONE:
case VIR_ASYNC_JOB_BACKUP:
+ case VIR_ASYNC_JOB_HOTPATCH:
G_GNUC_FALLTHROUGH;
case VIR_ASYNC_JOB_LAST:
break;
@@ -82,6 +83,7 @@ qemuDomainAsyncJobPhaseFromString(virDomainAsyncJob job,
case VIR_ASYNC_JOB_START:
case VIR_ASYNC_JOB_NONE:
case VIR_ASYNC_JOB_BACKUP:
+ case VIR_ASYNC_JOB_HOTPATCH:
G_GNUC_FALLTHROUGH;
case VIR_ASYNC_JOB_LAST:
break;
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 3dd82d6f12..31917ef591 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -12251,6 +12251,8 @@ qemuDomainAbortJobFlags(virDomainPtr dom,
qemuBackupJobCancelBlockjobs(vm, priv->backup, true, VIR_ASYNC_JOB_NONE);
ret = 0;
break;
+ case VIR_ASYNC_JOB_HOTPATCH:
+ break;
case VIR_ASYNC_JOB_LAST:
default:
@@ -19942,7 +19944,8 @@ qemuDomainHotpatchManage(virDomainPtr domain,
const char *id,
unsigned int flags)
{
- virDomainObjPtr vm;
+ virDomainObj *vm;
+ virQEMUDriver *driver = domain->conn->privateData;
char *ret = NULL;
size_t len;
@@ -19951,6 +19954,12 @@ qemuDomainHotpatchManage(virDomainPtr domain,
if (!(vm = qemuDomainObjFromDomain(domain)))
goto cleanup;
+ if (VirDomainObjBeginAsyncJob(driver, vm, QEMU_ASYNC_JOB_HOTPATCH,
+ VIR_DOMAIN_JOB_OPERATION_HOTPATCH, 0) < 0)
+ goto cleanup;
+
+ qemuDomainObjSetAsyncJobMask(vm, QEMU_JOB_DEFAULT_MASK);
+
switch (action) {
case VIR_DOMAIN_HOTPATCH_APPLY:
ret = qemuDomainHotpatchApply(vm, patch);
@@ -19977,6 +19986,9 @@ qemuDomainHotpatchManage(virDomainPtr domain,
if (len > 0)
ret[len - 1] = '\0';
+ endjob:
+ qemuDomainObjEndAsyncJob(driver, vm);
+
cleanup:
virDomainObjEndAPI(&vm);
return ret;
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index f9c34b72e8..73395ce3b2 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -1846,6 +1846,8 @@ qemuMigrationJobName(virDomainObj *vm)
return _("start");
case VIR_ASYNC_JOB_BACKUP:
return _("backup");
+ case VIR_ASYNC_JOB_HOTPATCH:
+ return _("hotpatch job");
case VIR_ASYNC_JOB_NONE:
case VIR_ASYNC_JOB_LAST:
default:
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index fc05b4b24f..318f9f6182 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -3758,6 +3758,7 @@ qemuProcessRecoverJob(virQEMUDriver *driver,
JOB_MASK(VIR_JOB_MODIFY)));
break;
+ case VIR_ASYNC_JOB_HOTPATCH:
case VIR_ASYNC_JOB_NONE:
case VIR_ASYNC_JOB_LAST:
break;
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 66f933dead..9d22e219f7 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -6152,6 +6152,7 @@ VIR_ENUM_IMPL(virshDomainJobOperation,
N_("Dump"),
N_("Backup"),
N_("Snapshot delete"),
+ N_("Hotpatch"),
);
static const char *
--
2.27.0
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zhou-zhengliang/libvirt.git
git@gitee.com:zhou-zhengliang/libvirt.git
zhou-zhengliang
libvirt
libvirt
master

搜索帮助