Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
a3262d81
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,发现更多精彩内容 >>
提交
a3262d81
编写于
3月 12, 2009
作者:
D
Daniel Veillard
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
* src/storage_conf.c: fix storage pool mode parsing, and refactoring
patch by Ryota Ozaki Daniel
上级
bdd68947
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
46 addition
and
66 deletion
+46
-66
ChangeLog
ChangeLog
+5
-0
src/storage_conf.c
src/storage_conf.c
+41
-66
未找到文件。
ChangeLog
浏览文件 @
a3262d81
Thu Mar 12 21:13:40 CET 2009 Daniel Veillard <veilard@redhat.com>
* src/storage_conf.c: fix storage pool mode parsing, and refactoring
patch by Ryota Ozaki
Wed Mar 11 14:42:24 CET 2009 Daniel Veillard <veilard@redhat.com>
Wed Mar 11 14:42:24 CET 2009 Daniel Veillard <veilard@redhat.com>
* src/xs_internal.c: fix xen events handling problem (Dan Berrange)
* src/xs_internal.c: fix xen events handling problem (Dan Berrange)
...
...
src/storage_conf.c
浏览文件 @
a3262d81
...
@@ -371,15 +371,33 @@ virStoragePoolDefParseAuthChap(virConnectPtr conn,
...
@@ -371,15 +371,33 @@ virStoragePoolDefParseAuthChap(virConnectPtr conn,
static
int
static
int
virStoragePoolDefParsePerms
(
virConnectPtr
conn
,
virStorageDefParsePerms
(
virConnectPtr
conn
,
xmlXPathContextPtr
ctxt
,
xmlXPathContextPtr
ctxt
,
virStoragePermsPtr
perms
)
{
virStoragePermsPtr
perms
,
const
char
*
permxpath
,
int
defaultmode
)
{
char
*
mode
;
char
*
mode
;
long
v
;
long
v
;
int
ret
=
-
1
;
xmlNodePtr
relnode
;
xmlNodePtr
node
;
mode
=
virXPathString
(
conn
,
"string(/pool/permissions/mode)"
,
ctxt
);
node
=
virXPathNode
(
conn
,
permxpath
,
ctxt
);
if
(
node
==
NULL
)
{
/* Set default values if there is not <permissions> element */
perms
->
mode
=
defaultmode
;
perms
->
uid
=
getuid
();
perms
->
gid
=
getgid
();
perms
->
label
=
NULL
;
return
0
;
}
relnode
=
ctxt
->
node
;
ctxt
->
node
=
node
;
mode
=
virXPathString
(
conn
,
"string(./mode)"
,
ctxt
);
if
(
!
mode
)
{
if
(
!
mode
)
{
perms
->
mode
=
0700
;
perms
->
mode
=
defaultmode
;
}
else
{
}
else
{
char
*
end
=
NULL
;
char
*
end
=
NULL
;
perms
->
mode
=
strtol
(
mode
,
&
end
,
8
);
perms
->
mode
=
strtol
(
mode
,
&
end
,
8
);
...
@@ -387,36 +405,39 @@ virStoragePoolDefParsePerms(virConnectPtr conn,
...
@@ -387,36 +405,39 @@ virStoragePoolDefParsePerms(virConnectPtr conn,
if
(
*
end
||
perms
->
mode
<
0
||
perms
->
mode
>
0777
)
{
if
(
*
end
||
perms
->
mode
<
0
||
perms
->
mode
>
0777
)
{
virStorageReportError
(
conn
,
VIR_ERR_XML_ERROR
,
virStorageReportError
(
conn
,
VIR_ERR_XML_ERROR
,
"%s"
,
_
(
"malformed octal mode"
));
"%s"
,
_
(
"malformed octal mode"
));
return
-
1
;
goto
error
;
}
}
}
}
if
(
virXPathNode
(
conn
,
"
/pool/permissions
/owner"
,
ctxt
)
==
NULL
)
{
if
(
virXPathNode
(
conn
,
"
.
/owner"
,
ctxt
)
==
NULL
)
{
perms
->
uid
=
getuid
();
perms
->
uid
=
getuid
();
}
else
{
}
else
{
if
(
virXPathLong
(
conn
,
"number(
/pool/permissions
/owner)"
,
ctxt
,
&
v
)
<
0
)
{
if
(
virXPathLong
(
conn
,
"number(
.
/owner)"
,
ctxt
,
&
v
)
<
0
)
{
virStorageReportError
(
conn
,
VIR_ERR_XML_ERROR
,
virStorageReportError
(
conn
,
VIR_ERR_XML_ERROR
,
"%s"
,
_
(
"malformed owner element"
));
"%s"
,
_
(
"malformed owner element"
));
return
-
1
;
goto
error
;
}
}
perms
->
uid
=
(
int
)
v
;
perms
->
uid
=
(
int
)
v
;
}
}
if
(
virXPathNode
(
conn
,
"
/pool/permissions
/group"
,
ctxt
)
==
NULL
)
{
if
(
virXPathNode
(
conn
,
"
.
/group"
,
ctxt
)
==
NULL
)
{
perms
->
gid
=
getgid
();
perms
->
gid
=
getgid
();
}
else
{
}
else
{
if
(
virXPathLong
(
conn
,
"number(
/pool/permissions
/group)"
,
ctxt
,
&
v
)
<
0
)
{
if
(
virXPathLong
(
conn
,
"number(
.
/group)"
,
ctxt
,
&
v
)
<
0
)
{
virStorageReportError
(
conn
,
VIR_ERR_XML_ERROR
,
virStorageReportError
(
conn
,
VIR_ERR_XML_ERROR
,
"%s"
,
_
(
"malformed group element"
));
"%s"
,
_
(
"malformed group element"
));
return
-
1
;
goto
error
;
}
}
perms
->
gid
=
(
int
)
v
;
perms
->
gid
=
(
int
)
v
;
}
}
/* NB, we're ignoring missing labels here - they'll simply inherit */
/* NB, we're ignoring missing labels here - they'll simply inherit */
perms
->
label
=
virXPathString
(
conn
,
"string(
/pool/permissions
/label)"
,
ctxt
);
perms
->
label
=
virXPathString
(
conn
,
"string(
.
/label)"
,
ctxt
);
return
0
;
ret
=
0
;
error:
ctxt
->
node
=
relnode
;
return
ret
;
}
}
...
@@ -579,7 +600,8 @@ virStoragePoolDefParseDoc(virConnectPtr conn,
...
@@ -579,7 +600,8 @@ virStoragePoolDefParseDoc(virConnectPtr conn,
goto
cleanup
;
goto
cleanup
;
}
}
if
(
virStoragePoolDefParsePerms
(
conn
,
ctxt
,
&
ret
->
target
.
perms
)
<
0
)
if
(
virStorageDefParsePerms
(
conn
,
ctxt
,
&
ret
->
target
.
perms
,
"/pool/target/permissions"
,
0700
)
<
0
)
goto
cleanup
;
goto
cleanup
;
return
ret
;
return
ret
;
...
@@ -800,55 +822,6 @@ virStoragePoolDefFormat(virConnectPtr conn,
...
@@ -800,55 +822,6 @@ virStoragePoolDefFormat(virConnectPtr conn,
}
}
static
int
virStorageVolDefParsePerms
(
virConnectPtr
conn
,
xmlXPathContextPtr
ctxt
,
virStoragePermsPtr
perms
)
{
char
*
mode
;
long
v
;
mode
=
virXPathString
(
conn
,
"string(/volume/permissions/mode)"
,
ctxt
);
if
(
!
mode
)
{
perms
->
mode
=
0600
;
}
else
{
char
*
end
=
NULL
;
perms
->
mode
=
strtol
(
mode
,
&
end
,
8
);
VIR_FREE
(
mode
);
if
(
*
end
||
perms
->
mode
<
0
||
perms
->
mode
>
0777
)
{
virStorageReportError
(
conn
,
VIR_ERR_XML_ERROR
,
"%s"
,
_
(
"malformed octal mode"
));
return
-
1
;
}
}
if
(
virXPathNode
(
conn
,
"/volume/permissions/owner"
,
ctxt
)
==
NULL
)
{
perms
->
uid
=
getuid
();
}
else
{
if
(
virXPathLong
(
conn
,
"number(/volume/permissions/owner)"
,
ctxt
,
&
v
)
<
0
)
{
virStorageReportError
(
conn
,
VIR_ERR_XML_ERROR
,
"%s"
,
_
(
"missing owner element"
));
return
-
1
;
}
perms
->
uid
=
(
int
)
v
;
}
if
(
virXPathNode
(
conn
,
"/volume/permissions/group"
,
ctxt
)
==
NULL
)
{
perms
->
gid
=
getgid
();
}
else
{
if
(
virXPathLong
(
conn
,
"number(/volume/permissions/group)"
,
ctxt
,
&
v
)
<
0
)
{
virStorageReportError
(
conn
,
VIR_ERR_XML_ERROR
,
"%s"
,
_
(
"missing group element"
));
return
-
1
;
}
perms
->
gid
=
(
int
)
v
;
}
/* NB, we're ignoring missing labels here - they'll simply inherit */
perms
->
label
=
virXPathString
(
conn
,
"string(/volume/permissions/label)"
,
ctxt
);
return
0
;
}
static
int
static
int
virStorageSize
(
virConnectPtr
conn
,
virStorageSize
(
virConnectPtr
conn
,
const
char
*
unit
,
const
char
*
unit
,
...
@@ -997,7 +970,8 @@ virStorageVolDefParseDoc(virConnectPtr conn,
...
@@ -997,7 +970,8 @@ virStorageVolDefParseDoc(virConnectPtr conn,
VIR_FREE
(
format
);
VIR_FREE
(
format
);
}
}
if
(
virStorageVolDefParsePerms
(
conn
,
ctxt
,
&
ret
->
target
.
perms
)
<
0
)
if
(
virStorageDefParsePerms
(
conn
,
ctxt
,
&
ret
->
target
.
perms
,
"/volume/target/permissions"
,
0600
)
<
0
)
goto
cleanup
;
goto
cleanup
;
...
@@ -1019,7 +993,8 @@ virStorageVolDefParseDoc(virConnectPtr conn,
...
@@ -1019,7 +993,8 @@ virStorageVolDefParseDoc(virConnectPtr conn,
VIR_FREE
(
format
);
VIR_FREE
(
format
);
}
}
if
(
virStorageVolDefParsePerms
(
conn
,
ctxt
,
&
ret
->
backingStore
.
perms
)
<
0
)
if
(
virStorageDefParsePerms
(
conn
,
ctxt
,
&
ret
->
backingStore
.
perms
,
"/volume/backingStore/permissions"
,
0600
)
<
0
)
goto
cleanup
;
goto
cleanup
;
return
ret
;
return
ret
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录