Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
6723c50b
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6723c50b
编写于
5月 03, 2007
作者:
D
Daniel P. Berrange
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Support <on_reboot> action
上级
3ac6e102
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
58 addition
and
7 deletion
+58
-7
ChangeLog
ChangeLog
+7
-1
qemud/conf.c
qemud/conf.c
+48
-6
qemud/internal.h
qemud/internal.h
+3
-0
未找到文件。
ChangeLog
浏览文件 @
6723c50b
Thu May 3 18:00:41 CEST 2007 Daiel Veillard <veillard@redhat.com>
Thu May 3 12:09:41 EST 2007 Daniel P. Berange <berrange@redhat.com>
* qemud/conf.c, qemud/internal.c: Read upto 8k from QEMU
help output. Support the <on_reboot> attribute to set the
-no-reboot flag in QEMU
Thu May 3 18:00:41 CEST 2007 Daniel Veillard <veillard@redhat.com>
* src/virsh.c: fix help for dumpxml and net-dumpxml commands
based on Chris Wright feedback
...
...
qemud/conf.c
浏览文件 @
6723c50b
...
...
@@ -245,18 +245,23 @@ static int qemudExtractVersionInfo(const char *qemu, int *version, int *flags) {
cleanup1:
_exit
(
-
1
);
/* Just in case */
}
else
{
/* Parent */
char
help
[
4096
];
/* Ought to be enough to hold QEMU help screen */
char
help
[
8192
];
/* Ought to be enough to hold QEMU help screen */
int
got
,
ret
=
-
1
;
int
major
,
minor
,
micro
;
if
(
close
(
newstdout
[
1
])
<
0
)
goto
cleanup2
;
reread:
if
((
got
=
read
(
newstdout
[
0
],
help
,
sizeof
(
help
)
-
1
))
<
0
)
{
if
(
errno
==
EINTR
)
goto
reread
;
goto
cleanup2
;
while
(
got
<
(
sizeof
(
help
)
-
1
))
{
int
len
;
if
((
len
=
read
(
newstdout
[
0
],
help
+
got
,
sizeof
(
help
)
-
got
-
1
))
<=
0
)
{
if
(
!
len
)
break
;
if
(
errno
==
EINTR
)
continue
;
goto
cleanup2
;
}
got
+=
len
;
}
help
[
got
]
=
'\0'
;
...
...
@@ -267,6 +272,8 @@ static int qemudExtractVersionInfo(const char *qemu, int *version, int *flags) {
*
version
=
(
major
*
1000
*
1000
)
+
(
minor
*
1000
)
+
micro
;
if
(
strstr
(
help
,
"-no-kqemu"
))
*
flags
|=
QEMUD_CMD_FLAG_KQEMU
;
if
(
strstr
(
help
,
"-no-reboot"
))
*
flags
|=
QEMUD_CMD_FLAG_NO_REBOOT
;
if
(
*
version
>=
9000
)
*
flags
|=
QEMUD_CMD_FLAG_VNC_COLON
;
ret
=
0
;
...
...
@@ -858,6 +865,22 @@ static struct qemud_vm_def *qemudParseXML(struct qemud_server *server,
}
xmlXPathFreeObject
(
obj
);
/* See if we disable reboots */
obj
=
xmlXPathEval
(
BAD_CAST
"string(/domain/on_reboot)"
,
ctxt
);
if
((
obj
==
NULL
)
||
(
obj
->
type
!=
XPATH_STRING
)
||
(
obj
->
stringval
==
NULL
)
||
(
obj
->
stringval
[
0
]
==
0
))
{
def
->
noReboot
=
0
;
}
else
{
if
(
!
strcmp
((
char
*
)
obj
->
stringval
,
"destroy"
))
def
->
noReboot
=
1
;
else
def
->
noReboot
=
0
;
}
if
(
obj
)
xmlXPathFreeObject
(
obj
);
/* Extract OS type info */
obj
=
xmlXPathEval
(
BAD_CAST
"string(/domain/os/type[1])"
,
ctxt
);
if
((
obj
==
NULL
)
||
(
obj
->
type
!=
XPATH_STRING
)
||
...
...
@@ -1220,6 +1243,8 @@ int qemudBuildCommandLine(struct qemud_server *server,
2
+
/* cpus */
2
+
/* boot device */
2
+
/* monitor */
(
server
->
qemuCmdFlags
&
QEMUD_CMD_FLAG_NO_REBOOT
&&
vm
->
def
->
noReboot
?
1
:
0
)
+
/* no-reboot */
(
vm
->
def
->
features
&
QEMUD_FEATURE_ACPI
?
0
:
1
)
+
/* acpi */
(
vm
->
def
->
os
.
kernel
[
0
]
?
2
:
0
)
+
/* kernel */
(
vm
->
def
->
os
.
initrd
[
0
]
?
2
:
0
)
+
/* initrd */
...
...
@@ -1256,6 +1281,12 @@ int qemudBuildCommandLine(struct qemud_server *server,
if
(
!
((
*
argv
)[
++
n
]
=
strdup
(
"pty"
)))
goto
no_memory
;
if
(
server
->
qemuCmdFlags
&
QEMUD_CMD_FLAG_NO_REBOOT
&&
vm
->
def
->
noReboot
)
{
if
(
!
((
*
argv
)[
++
n
]
=
strdup
(
"-no-reboot"
)))
goto
no_memory
;
}
if
(
!
(
vm
->
def
->
features
&
QEMUD_FEATURE_ACPI
))
{
if
(
!
((
*
argv
)[
++
n
]
=
strdup
(
"-no-acpi"
)))
goto
no_memory
;
...
...
@@ -2517,6 +2548,17 @@ char *qemudGenerateXML(struct qemud_server *server,
goto
no_memory
;
}
if
(
bufferAdd
(
buf
,
" <on_poweroff>destroy</on_poweroff>
\n
"
,
-
1
)
<
0
)
goto
no_memory
;
if
(
def
->
noReboot
)
{
if
(
bufferAdd
(
buf
,
" <on_reboot>destroy</on_reboot>
\n
"
,
-
1
)
<
0
)
goto
no_memory
;
}
else
{
if
(
bufferAdd
(
buf
,
" <on_reboot>restart</on_reboot>
\n
"
,
-
1
)
<
0
)
goto
no_memory
;
}
if
(
bufferAdd
(
buf
,
" <on_crash>destroy</on_crash>
\n
"
,
-
1
)
<
0
)
goto
no_memory
;
if
(
bufferAdd
(
buf
,
" <devices>
\n
"
,
-
1
)
<
0
)
goto
no_memory
;
...
...
qemud/internal.h
浏览文件 @
6723c50b
...
...
@@ -161,6 +161,7 @@ enum qemud_vm_grapics_type {
enum
qemud_cmd_flags
{
QEMUD_CMD_FLAG_KQEMU
=
1
,
QEMUD_CMD_FLAG_VNC_COLON
=
2
,
QEMUD_CMD_FLAG_NO_REBOOT
=
4
,
};
...
...
@@ -191,6 +192,8 @@ struct qemud_vm_def {
int
maxmem
;
int
vcpus
;
int
noReboot
;
struct
qemud_vm_os_def
os
;
int
features
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录