Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
319b83fc
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,发现更多精彩内容 >>
提交
319b83fc
编写于
11月 28, 2008
作者:
D
Daniel P. Berrange
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix XM driver handling of disk source paths
上级
c23ff311
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
131 addition
and
28 deletion
+131
-28
ChangeLog
ChangeLog
+11
-0
src/domain_conf.c
src/domain_conf.c
+8
-0
src/xm_internal.c
src/xm_internal.c
+42
-28
tests/xmconfigdata/test-no-source-cdrom.cfg
tests/xmconfigdata/test-no-source-cdrom.cfg
+23
-0
tests/xmconfigdata/test-no-source-cdrom.xml
tests/xmconfigdata/test-no-source-cdrom.xml
+46
-0
tests/xmconfigtest.c
tests/xmconfigtest.c
+1
-0
未找到文件。
ChangeLog
浏览文件 @
319b83fc
Fri Nov 28 11:21:40 GMT 2008 Daniel P. Berrange <berrange@redhat.com>
Fix XM driver disk parsing with no source CDROMs
* src/domain_conf.c: Translate "" into NULL for disk source
path to deal with broken apps
* src/xm_internal.c: Fix disk source parsing to work with
no-source disk definitions (eg CDROM without media)
* tests/xmconfigdata/test-no-source-cdrom.cfg,
tests/xmconfigdata/test-no-source-cdrom.xml,
tests/xmconfigtest.c: Add test case for no-src CDROM
Fri Nov 28 11:17:40 GMT 2008 Daniel P. Berrange <berrange@redhat.com>
* libvirt.spec.in: Add missing numa-ctl BuildRequires
...
...
src/domain_conf.c
浏览文件 @
319b83fc
...
...
@@ -546,6 +546,14 @@ virDomainDiskDefParseXML(virConnectPtr conn,
source
=
virXMLPropString
(
cur
,
"file"
);
else
source
=
virXMLPropString
(
cur
,
"dev"
);
/* People sometimes pass a bogus '' source path
when they mean to omit the source element
completely. eg CDROM without media. This is
just a little compatability check to help
those broken apps */
if
(
source
&&
STREQ
(
source
,
""
))
VIR_FREE
(
source
);
}
else
if
((
target
==
NULL
)
&&
(
xmlStrEqual
(
cur
->
name
,
BAD_CAST
"target"
)))
{
target
=
virXMLPropString
(
cur
,
"dev"
);
...
...
src/xm_internal.c
浏览文件 @
319b83fc
...
...
@@ -828,7 +828,7 @@ xenXMDomainConfigParse(virConnectPtr conn, virConfPtr conf) {
while
(
list
)
{
char
*
head
;
char
*
offset
;
char
*
tmp
,
*
tmp1
;
char
*
tmp
;
if
((
list
->
type
!=
VIR_CONF_STRING
)
||
(
list
->
str
==
NULL
))
goto
skipdisk
;
...
...
@@ -850,10 +850,15 @@ xenXMDomainConfigParse(virConnectPtr conn, virConfPtr conf) {
goto
skipdisk
;
if
((
offset
-
head
)
>=
(
PATH_MAX
-
1
))
goto
skipdisk
;
if
(
VIR_ALLOC_N
(
disk
->
src
,
(
offset
-
head
)
+
1
)
<
0
)
goto
no_memory
;
strncpy
(
disk
->
src
,
head
,
(
offset
-
head
));
disk
->
src
[(
offset
-
head
)]
=
'\0'
;
if
(
offset
==
head
)
{
disk
->
src
=
NULL
;
/* No source file given, eg CDROM with no media */
}
else
{
if
(
VIR_ALLOC_N
(
disk
->
src
,
(
offset
-
head
)
+
1
)
<
0
)
goto
no_memory
;
strncpy
(
disk
->
src
,
head
,
(
offset
-
head
));
disk
->
src
[(
offset
-
head
)]
=
'\0'
;
}
head
=
offset
+
1
;
/* Remove legacy ioemu: junk */
...
...
@@ -871,32 +876,41 @@ xenXMDomainConfigParse(virConnectPtr conn, virConfPtr conf) {
/* Extract source driver type */
if
(
disk
->
src
&&
(
tmp
=
strchr
(
disk
->
src
,
':'
))
!=
NULL
)
{
if
(
VIR_ALLOC_N
(
disk
->
driverName
,
(
tmp
-
disk
->
src
)
+
1
)
<
0
)
goto
no_memory
;
strncpy
(
disk
->
driverName
,
disk
->
src
,
(
tmp
-
disk
->
src
));
disk
->
driverName
[
tmp
-
disk
->
src
]
=
'\0'
;
}
else
{
if
(
!
(
disk
->
driverName
=
strdup
(
"phy"
)))
goto
no_memory
;
tmp
=
disk
->
src
;
}
if
(
disk
->
src
)
{
/* The main type phy:, file:, tap: ... */
if
((
tmp
=
strchr
(
disk
->
src
,
':'
))
!=
NULL
)
{
if
(
VIR_ALLOC_N
(
disk
->
driverName
,
(
tmp
-
disk
->
src
)
+
1
)
<
0
)
goto
no_memory
;
strncpy
(
disk
->
driverName
,
disk
->
src
,
(
tmp
-
disk
->
src
));
disk
->
driverName
[
tmp
-
disk
->
src
]
=
'\0'
;
/* And the source driver sub-type */
if
(
STRPREFIX
(
disk
->
driverName
,
"tap"
))
{
if
(
!
(
tmp1
=
strchr
(
tmp
+
1
,
':'
))
||
!
tmp1
[
0
])
goto
skipdisk
;
if
(
VIR_ALLOC_N
(
disk
->
driverType
,
(
tmp1
-
(
tmp
+
1
)))
<
0
)
goto
no_memory
;
strncpy
(
disk
->
driverType
,
tmp
+
1
,
(
tmp1
-
(
tmp
+
1
)));
memmove
(
disk
->
src
,
disk
->
src
+
(
tmp1
-
disk
->
src
)
+
1
,
strlen
(
disk
->
src
)
-
(
tmp1
-
disk
->
src
));
}
else
{
disk
->
driverType
=
NULL
;
if
(
disk
->
src
[
0
]
&&
tmp
)
memmove
(
disk
->
src
,
disk
->
src
+
(
tmp
-
disk
->
src
)
+
1
,
strlen
(
disk
->
src
)
-
(
tmp
-
disk
->
src
));
/* Strip the prefix we found off the source file name */
memmove
(
disk
->
src
,
disk
->
src
+
(
tmp
-
disk
->
src
)
+
1
,
strlen
(
disk
->
src
)
-
(
tmp
-
disk
->
src
));
}
/* And the sub-type for tap:XXX: type */
if
(
disk
->
driverName
&&
STREQ
(
disk
->
driverName
,
"tap"
))
{
if
(
!
(
tmp
=
strchr
(
disk
->
src
,
':'
)))
goto
skipdisk
;
if
(
VIR_ALLOC_N
(
disk
->
driverType
,
(
tmp
-
disk
->
src
)
+
1
)
<
0
)
goto
no_memory
;
strncpy
(
disk
->
driverType
,
disk
->
src
,
(
tmp
-
disk
->
src
));
disk
->
driverType
[
tmp
-
disk
->
src
]
=
'\0'
;
/* Strip the prefix we found off the source file name */
memmove
(
disk
->
src
,
disk
->
src
+
(
tmp
-
disk
->
src
)
+
1
,
strlen
(
disk
->
src
)
-
(
tmp
-
disk
->
src
));
}
}
/* No source, or driver name, so fix to phy: */
if
(
!
disk
->
driverName
&&
!
(
disk
->
driverName
=
strdup
(
"phy"
)))
goto
no_memory
;
/* phy: type indicates a block device */
disk
->
type
=
STREQ
(
disk
->
driverName
,
"phy"
)
?
VIR_DOMAIN_DISK_TYPE_BLOCK
:
VIR_DOMAIN_DISK_TYPE_FILE
;
...
...
tests/xmconfigdata/test-no-source-cdrom.cfg
0 → 100644
浏览文件 @
319b83fc
name = "test"
uuid = "cc2315e7-d26a-307a-438c-6d188ec4c09c"
maxmem = 382
memory = 350
vcpus = 1
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "c"
pae = 1
acpi = 1
apic = 1
localtime = 0
on_poweroff = "destroy"
on_reboot = "destroy"
on_crash = "destroy"
device_model = "/usr/lib/xen/bin/qemu-dm"
sdl = 0
vnc = 1
vncunused = 1
disk = [ "phy:/dev/sda8,hda,w", ",hdc:cdrom,r" ]
vif = [ "mac=00:16:3e:0a:7b:39,bridge=xenbr0,type=ioemu" ]
parallel = "none"
serial = "pty"
tests/xmconfigdata/test-no-source-cdrom.xml
0 → 100644
浏览文件 @
319b83fc
<domain
type=
'xen'
>
<name>
test
</name>
<uuid>
cc2315e7-d26a-307a-438c-6d188ec4c09c
</uuid>
<memory>
391168
</memory>
<currentMemory>
358400
</currentMemory>
<vcpu>
1
</vcpu>
<os>
<type
arch=
'i686'
machine=
'xenfv'
>
hvm
</type>
<loader>
/usr/lib/xen/boot/hvmloader
</loader>
<boot
dev=
'hd'
/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock
offset=
'utc'
/>
<on_poweroff>
destroy
</on_poweroff>
<on_reboot>
destroy
</on_reboot>
<on_crash>
destroy
</on_crash>
<devices>
<emulator>
/usr/lib/xen/bin/qemu-dm
</emulator>
<disk
type=
'block'
device=
'disk'
>
<driver
name=
'phy'
/>
<source
dev=
'/dev/sda8'
/>
<target
dev=
'hda'
bus=
'ide'
/>
</disk>
<disk
type=
'block'
device=
'cdrom'
>
<driver
name=
'phy'
/>
<target
dev=
'hdc'
bus=
'ide'
/>
<readonly/>
</disk>
<interface
type=
'bridge'
>
<mac
address=
'00:16:3e:0a:7b:39'
/>
<source
bridge=
'xenbr0'
/>
</interface>
<serial
type=
'pty'
>
<target
port=
'0'
/>
</serial>
<console
type=
'pty'
>
<target
port=
'0'
/>
</console>
<input
type=
'mouse'
bus=
'ps2'
/>
<graphics
type=
'vnc'
port=
'-1'
autoport=
'yes'
/>
</devices>
</domain>
tests/xmconfigtest.c
浏览文件 @
319b83fc
...
...
@@ -229,6 +229,7 @@ mymain(int argc, char **argv)
DO_TEST
(
"fullvirt-sound"
,
2
);
DO_TEST
(
"escape-paths"
,
2
);
DO_TEST
(
"no-source-cdrom"
,
2
);
virCapabilitiesFree
(
caps
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录