Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
457f8f33
L
libvirt
项目概览
openeuler
/
libvirt
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
libvirt
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
457f8f33
编写于
8月 17, 2017
作者:
S
Scott Garfinkle
提交者:
John Ferlan
8月 26, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
qemu: Implement virDomainMigrateGetMaxDowntime
Add code to support querying maximum allowable downtime during live migration.
上级
4601a546
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
87 addition
and
1 deletion
+87
-1
src/qemu/qemu_driver.c
src/qemu/qemu_driver.c
+56
-0
src/qemu/qemu_monitor.h
src/qemu/qemu_monitor.h
+3
-0
src/qemu/qemu_monitor_json.c
src/qemu/qemu_monitor_json.c
+4
-0
src/remote/remote_driver.c
src/remote/remote_driver.c
+1
-0
src/remote/remote_protocol.x
src/remote/remote_protocol.x
+15
-1
src/remote_protocol-structs
src/remote_protocol-structs
+8
-0
未找到文件。
src/qemu/qemu_driver.c
浏览文件 @
457f8f33
...
...
@@ -13150,6 +13150,61 @@ qemuDomainMigrateSetMaxDowntime(virDomainPtr dom,
return ret;
}
static int
qemuDomainMigrateGetMaxDowntime(virDomainPtr dom,
unsigned long long *downtime,
unsigned int flags)
{
virQEMUDriverPtr driver = dom->conn->privateData;
virDomainObjPtr vm;
qemuDomainObjPrivatePtr priv;
qemuMonitorMigrationParams migparams = { 0 };
int ret = -1;
virCheckFlags(0, -1);
if (!(vm = qemuDomObjFromDomain(dom)))
return -1;
if (virDomainMigrateGetMaxDowntimeEnsureACL(dom->conn, vm->def) < 0)
goto cleanup;
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0)
goto cleanup;
if (!virDomainObjIsActive(vm)) {
virReportError(VIR_ERR_OPERATION_INVALID,
"%s", _("domain is not running"));
goto endjob;
}
priv = vm->privateData;
qemuDomainObjEnterMonitor(driver, vm);
if (qemuMonitorGetMigrationParams(priv->mon, &migparams) == 0) {
if (migparams.downtimeLimit_set) {
*downtime = migparams.downtimeLimit;
ret = 0;
} else {
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
_("Querying migration downtime is not supported by "
"QEMU binary"));
}
}
if (qemuDomainObjExitMonitor(driver, vm) < 0)
ret = -1;
endjob:
qemuDomainObjEndJob(driver, vm);
cleanup:
virDomainObjEndAPI(&vm);
return ret;
}
static int
qemuDomainMigrateGetCompressionCache(virDomainPtr dom,
unsigned long long *cacheSize,
...
...
@@ -20829,6 +20884,7 @@ static virHypervisorDriver qemuHypervisorDriver = {
.domainGetJobInfo = qemuDomainGetJobInfo, /* 0.7.7 */
.domainGetJobStats = qemuDomainGetJobStats, /* 1.0.3 */
.domainAbortJob = qemuDomainAbortJob, /* 0.7.7 */
.domainMigrateGetMaxDowntime = qemuDomainMigrateGetMaxDowntime, /* 3.7.0 */
.domainMigrateSetMaxDowntime = qemuDomainMigrateSetMaxDowntime, /* 0.8.0 */
.domainMigrateGetCompressionCache = qemuDomainMigrateGetCompressionCache, /* 1.0.3 */
.domainMigrateSetCompressionCache = qemuDomainMigrateSetCompressionCache, /* 1.0.3 */
...
...
src/qemu/qemu_monitor.h
浏览文件 @
457f8f33
...
...
@@ -627,6 +627,9 @@ struct _qemuMonitorMigrationParams {
* whereas, some string value indicates we can support setting/clearing */
char
*
migrateTLSAlias
;
char
*
migrateTLSHostname
;
bool
downtimeLimit_set
;
unsigned
long
long
downtimeLimit
;
};
int
qemuMonitorGetMigrationParams
(
qemuMonitorPtr
mon
,
...
...
src/qemu/qemu_monitor_json.c
浏览文件 @
457f8f33
...
...
@@ -2705,6 +2705,10 @@ qemuMonitorJSONGetMigrationParams(qemuMonitorPtr mon,
#undef PARSE
if
(
virJSONValueObjectGetNumberUlong
(
result
,
"downtime-limit"
,
&
params
->
downtimeLimit
)
==
0
)
params
->
downtimeLimit_set
=
true
;
if
((
tlsStr
=
virJSONValueObjectGetString
(
result
,
"tls-creds"
)))
{
if
(
VIR_STRDUP
(
params
->
migrateTLSAlias
,
tlsStr
)
<
0
)
goto
cleanup
;
...
...
src/remote/remote_driver.c
浏览文件 @
457f8f33
...
...
@@ -8400,6 +8400,7 @@ static virHypervisorDriver hypervisor_driver = {
.
domainGetJobInfo
=
remoteDomainGetJobInfo
,
/* 0.7.7 */
.
domainGetJobStats
=
remoteDomainGetJobStats
,
/* 1.0.3 */
.
domainAbortJob
=
remoteDomainAbortJob
,
/* 0.7.7 */
.
domainMigrateGetMaxDowntime
=
remoteDomainMigrateGetMaxDowntime
,
/* 3.7.0 */
.
domainMigrateSetMaxDowntime
=
remoteDomainMigrateSetMaxDowntime
,
/* 0.8.0 */
.
domainMigrateGetCompressionCache
=
remoteDomainMigrateGetCompressionCache
,
/* 1.0.3 */
.
domainMigrateSetCompressionCache
=
remoteDomainMigrateSetCompressionCache
,
/* 1.0.3 */
...
...
src/remote/remote_protocol.x
浏览文件 @
457f8f33
...
...
@@ -2326,6 +2326,15 @@ struct remote_domain_abort_job_args {
};
struct
remote_domain_migrate_get_max_downtime_args
{
remote_nonnull_domain
dom
;
unsigned
int
flags
;
};
struct
remote_domain_migrate_get_max_downtime_ret
{
unsigned
hyper
downtime
;
/* insert@1 */
};
struct
remote_domain_migrate_set_max_downtime_args
{
remote_nonnull_domain
dom
;
unsigned
hyper
downtime
;
...
...
@@ -6064,7 +6073,12 @@ enum remote_procedure {
* @generate: both
* @acl: domain:write
*/
REMOTE_PROC_DOMAIN_SET_BLOCK_THRESHOLD
=
386
REMOTE_PROC_DOMAIN_SET_BLOCK_THRESHOLD
=
386
,
/**
* @generate: both
* @acl: domain:migrate
*/
REMOTE_PROC_DOMAIN_MIGRATE_GET_MAX_DOWNTIME
=
387
};
src/remote_protocol-structs
浏览文件 @
457f8f33
...
...
@@ -1773,6 +1773,13 @@ struct remote_domain_get_job_stats_ret {
struct
remote_domain_abort_job_args
{
remote_nonnull_domain
dom
;
};
struct
remote_domain_migrate_get_max_downtime_args
{
remote_nonnull_domain
dom
;
u_int
flags
;
};
struct
remote_domain_migrate_get_max_downtime_ret
{
uint64_t
downtime
;
};
struct
remote_domain_migrate_set_max_downtime_args
{
remote_nonnull_domain
dom
;
uint64_t
downtime
;
...
...
@@ -3233,4 +3240,5 @@ enum remote_procedure {
REMOTE_PROC_DOMAIN_SET_VCPU
=
384
,
REMOTE_PROC_DOMAIN_EVENT_BLOCK_THRESHOLD
=
385
,
REMOTE_PROC_DOMAIN_SET_BLOCK_THRESHOLD
=
386
,
REMOTE_PROC_DOMAIN_MIGRATE_GET_MAX_DOWNTIME
=
387
,
};
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录