Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
efdcc92f
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看板
提交
efdcc92f
编写于
4月 23, 2013
作者:
J
John Ferlan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Handle the domain event 'on_reboot' and 'on_poweroff' settings
上级
f612664b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
22 addition
and
4 deletion
+22
-4
src/qemu/qemu_driver.c
src/qemu/qemu_driver.c
+22
-4
未找到文件。
src/qemu/qemu_driver.c
浏览文件 @
efdcc92f
...
...
@@ -1712,6 +1712,8 @@ static int qemuDomainShutdownFlags(virDomainPtr dom, unsigned int flags) {
int
ret
=
-
1
;
qemuDomainObjPrivatePtr
priv
;
bool
useAgent
=
false
,
agentRequested
,
acpiRequested
;
bool
isReboot
=
false
;
int
agentFlag
=
QEMU_AGENT_SHUTDOWN_POWERDOWN
;
virCheckFlags
(
VIR_DOMAIN_SHUTDOWN_ACPI_POWER_BTN
|
VIR_DOMAIN_SHUTDOWN_GUEST_AGENT
,
-
1
);
...
...
@@ -1719,6 +1721,13 @@ static int qemuDomainShutdownFlags(virDomainPtr dom, unsigned int flags) {
if
(
!
(
vm
=
qemuDomObjFromDomain
(
dom
)))
goto
cleanup
;
if
(
vm
->
def
->
onPoweroff
==
VIR_DOMAIN_LIFECYCLE_RESTART
||
vm
->
def
->
onPoweroff
==
VIR_DOMAIN_LIFECYCLE_RESTART_RENAME
)
{
isReboot
=
true
;
agentFlag
=
QEMU_AGENT_SHUTDOWN_REBOOT
;
VIR_INFO
(
"Domain on_poweroff setting overridden, attempting reboot"
);
}
priv
=
vm
->
privateData
;
agentRequested
=
flags
&
VIR_DOMAIN_SHUTDOWN_GUEST_AGENT
;
acpiRequested
=
flags
&
VIR_DOMAIN_SHUTDOWN_ACPI_POWER_BTN
;
...
...
@@ -1759,7 +1768,7 @@ static int qemuDomainShutdownFlags(virDomainPtr dom, unsigned int flags) {
if
(
useAgent
)
{
qemuDomainObjEnterAgent
(
vm
);
ret
=
qemuAgentShutdown
(
priv
->
agent
,
QEMU_AGENT_SHUTDOWN_POWERDOWN
);
ret
=
qemuAgentShutdown
(
priv
->
agent
,
agentFlag
);
qemuDomainObjExitAgent
(
vm
);
}
...
...
@@ -1768,7 +1777,7 @@ static int qemuDomainShutdownFlags(virDomainPtr dom, unsigned int flags) {
*/
if
(
!
useAgent
||
(
ret
<
0
&&
(
acpiRequested
||
!
flags
)))
{
qemuDomainSetFakeReboot
(
driver
,
vm
,
false
);
qemuDomainSetFakeReboot
(
driver
,
vm
,
isReboot
);
qemuDomainObjEnterMonitor
(
driver
,
vm
);
ret
=
qemuMonitorSystemPowerdown
(
priv
->
mon
);
...
...
@@ -1799,6 +1808,8 @@ qemuDomainReboot(virDomainPtr dom, unsigned int flags)
int
ret
=
-
1
;
qemuDomainObjPrivatePtr
priv
;
bool
useAgent
=
false
;
bool
isReboot
=
true
;
int
agentFlag
=
QEMU_AGENT_SHUTDOWN_REBOOT
;
virCheckFlags
(
VIR_DOMAIN_REBOOT_ACPI_POWER_BTN
|
VIR_DOMAIN_REBOOT_GUEST_AGENT
,
-
1
);
...
...
@@ -1814,6 +1825,13 @@ qemuDomainReboot(virDomainPtr dom, unsigned int flags)
if
(
!
(
vm
=
qemuDomObjFromDomain
(
dom
)))
goto
cleanup
;
if
(
vm
->
def
->
onReboot
==
VIR_DOMAIN_LIFECYCLE_DESTROY
||
vm
->
def
->
onReboot
==
VIR_DOMAIN_LIFECYCLE_PRESERVE
)
{
agentFlag
=
QEMU_AGENT_SHUTDOWN_POWERDOWN
;
isReboot
=
false
;
VIR_INFO
(
"Domain on_reboot setting overridden, shutting down"
);
}
priv
=
vm
->
privateData
;
if
((
flags
&
VIR_DOMAIN_REBOOT_GUEST_AGENT
)
||
...
...
@@ -1862,7 +1880,7 @@ qemuDomainReboot(virDomainPtr dom, unsigned int flags)
if
(
useAgent
)
{
qemuDomainObjEnterAgent
(
vm
);
ret
=
qemuAgentShutdown
(
priv
->
agent
,
QEMU_AGENT_SHUTDOWN_REBOOT
);
ret
=
qemuAgentShutdown
(
priv
->
agent
,
agentFlag
);
qemuDomainObjExitAgent
(
vm
);
}
else
{
qemuDomainObjEnterMonitor
(
driver
,
vm
);
...
...
@@ -1870,7 +1888,7 @@ qemuDomainReboot(virDomainPtr dom, unsigned int flags)
qemuDomainObjExitMonitor
(
driver
,
vm
);
if
(
ret
==
0
)
qemuDomainSetFakeReboot
(
driver
,
vm
,
true
);
qemuDomainSetFakeReboot
(
driver
,
vm
,
isReboot
);
}
endjob:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录