Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
47eb32d3
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,发现更多精彩内容 >>
提交
47eb32d3
编写于
8月 11, 2014
作者:
T
Taowei
提交者:
Michal Privoznik
8月 15, 2014
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
vbox: Rewrite vboxDomainSnapshotListNames
上级
1157d85c
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
81 addition
and
90 deletion
+81
-90
src/vbox/vbox_common.c
src/vbox/vbox_common.c
+79
-0
src/vbox/vbox_tmpl.c
src/vbox/vbox_tmpl.c
+0
-90
src/vbox/vbox_uniformed_api.h
src/vbox/vbox_uniformed_api.h
+2
-0
未找到文件。
src/vbox/vbox_common.c
浏览文件 @
47eb32d3
...
@@ -6109,3 +6109,82 @@ int vboxDomainSnapshotNum(virDomainPtr dom, unsigned int flags)
...
@@ -6109,3 +6109,82 @@ int vboxDomainSnapshotNum(virDomainPtr dom, unsigned int flags)
vboxIIDUnalloc
(
&
iid
);
vboxIIDUnalloc
(
&
iid
);
return
ret
;
return
ret
;
}
}
int
vboxDomainSnapshotListNames
(
virDomainPtr
dom
,
char
**
names
,
int
nameslen
,
unsigned
int
flags
)
{
VBOX_OBJECT_CHECK
(
dom
->
conn
,
int
,
-
1
);
vboxIIDUnion
iid
;
IMachine
*
machine
=
NULL
;
nsresult
rc
;
ISnapshot
**
snapshots
=
NULL
;
int
count
=
0
;
size_t
i
;
virCheckFlags
(
VIR_DOMAIN_SNAPSHOT_LIST_ROOTS
|
VIR_DOMAIN_SNAPSHOT_LIST_METADATA
,
-
1
);
if
(
openSessionForMachine
(
data
,
dom
->
uuid
,
&
iid
,
&
machine
,
false
)
<
0
)
goto
cleanup
;
if
(
flags
&
VIR_DOMAIN_SNAPSHOT_LIST_METADATA
)
{
ret
=
0
;
goto
cleanup
;
}
if
(
flags
&
VIR_DOMAIN_SNAPSHOT_LIST_ROOTS
)
{
vboxIIDUnion
empty
;
VBOX_IID_INITIALIZE
(
&
empty
);
if
(
VIR_ALLOC_N
(
snapshots
,
1
)
<
0
)
goto
cleanup
;
rc
=
gVBoxAPI
.
UIMachine
.
FindSnapshot
(
machine
,
&
empty
,
snapshots
);
if
(
NS_FAILED
(
rc
)
||
!
snapshots
[
0
])
{
virReportError
(
VIR_ERR_INTERNAL_ERROR
,
_
(
"could not get root snapshot for domain %s"
),
dom
->
name
);
goto
cleanup
;
}
count
=
1
;
}
else
{
if
((
count
=
vboxDomainSnapshotGetAll
(
dom
,
machine
,
&
snapshots
))
<
0
)
goto
cleanup
;
}
for
(
i
=
0
;
i
<
nameslen
;
i
++
)
{
PRUnichar
*
nameUtf16
;
char
*
name
;
if
(
i
>=
count
)
break
;
rc
=
gVBoxAPI
.
UISnapshot
.
GetName
(
snapshots
[
i
],
&
nameUtf16
);
if
(
NS_FAILED
(
rc
)
||
!
nameUtf16
)
{
virReportError
(
VIR_ERR_INTERNAL_ERROR
,
"%s"
,
_
(
"could not get snapshot name"
));
goto
cleanup
;
}
VBOX_UTF16_TO_UTF8
(
nameUtf16
,
&
name
);
VBOX_UTF16_FREE
(
nameUtf16
);
if
(
VIR_STRDUP
(
names
[
i
],
name
)
<
0
)
{
VBOX_UTF8_FREE
(
name
);
goto
cleanup
;
}
VBOX_UTF8_FREE
(
name
);
}
if
(
count
<=
nameslen
)
ret
=
count
;
else
ret
=
nameslen
;
cleanup:
if
(
count
>
0
)
{
for
(
i
=
0
;
i
<
count
;
i
++
)
VBOX_RELEASE
(
snapshots
[
i
]);
}
VIR_FREE
(
snapshots
);
VBOX_RELEASE
(
machine
);
vboxIIDUnalloc
(
&
iid
);
return
ret
;
}
src/vbox/vbox_tmpl.c
浏览文件 @
47eb32d3
...
@@ -1523,96 +1523,6 @@ vboxDomainSnapshotGet(vboxGlobalData *data,
...
@@ -1523,96 +1523,6 @@ vboxDomainSnapshotGet(vboxGlobalData *data,
return
snapshot
;
return
snapshot
;
}
}
static
int
vboxDomainSnapshotListNames
(
virDomainPtr
dom
,
char
**
names
,
int
nameslen
,
unsigned
int
flags
)
{
VBOX_OBJECT_CHECK
(
dom
->
conn
,
int
,
-
1
);
vboxIID
iid
=
VBOX_IID_INITIALIZER
;
IMachine
*
machine
=
NULL
;
nsresult
rc
;
ISnapshot
**
snapshots
=
NULL
;
int
count
=
0
;
size_t
i
;
virCheckFlags
(
VIR_DOMAIN_SNAPSHOT_LIST_ROOTS
|
VIR_DOMAIN_SNAPSHOT_LIST_METADATA
,
-
1
);
vboxIIDFromUUID
(
&
iid
,
dom
->
uuid
);
rc
=
VBOX_OBJECT_GET_MACHINE
(
iid
.
value
,
&
machine
);
if
(
NS_FAILED
(
rc
))
{
virReportError
(
VIR_ERR_NO_DOMAIN
,
"%s"
,
_
(
"no domain with matching UUID"
));
goto
cleanup
;
}
if
(
flags
&
VIR_DOMAIN_SNAPSHOT_LIST_METADATA
)
{
ret
=
0
;
goto
cleanup
;
}
if
(
flags
&
VIR_DOMAIN_SNAPSHOT_LIST_ROOTS
)
{
vboxIID
empty
=
VBOX_IID_INITIALIZER
;
if
(
VIR_ALLOC_N
(
snapshots
,
1
)
<
0
)
goto
cleanup
;
#if VBOX_API_VERSION < 4000000
rc
=
machine
->
vtbl
->
GetSnapshot
(
machine
,
empty
.
value
,
snapshots
);
#else
/* VBOX_API_VERSION >= 4000000 */
rc
=
machine
->
vtbl
->
FindSnapshot
(
machine
,
empty
.
value
,
snapshots
);
#endif
/* VBOX_API_VERSION >= 4000000 */
if
(
NS_FAILED
(
rc
)
||
!
snapshots
[
0
])
{
virReportError
(
VIR_ERR_INTERNAL_ERROR
,
_
(
"could not get root snapshot for domain %s"
),
dom
->
name
);
goto
cleanup
;
}
count
=
1
;
}
else
{
if
((
count
=
vboxDomainSnapshotGetAll
(
dom
,
machine
,
&
snapshots
))
<
0
)
goto
cleanup
;
}
for
(
i
=
0
;
i
<
nameslen
;
i
++
)
{
PRUnichar
*
nameUtf16
;
char
*
name
;
if
(
i
>=
count
)
break
;
rc
=
snapshots
[
i
]
->
vtbl
->
GetName
(
snapshots
[
i
],
&
nameUtf16
);
if
(
NS_FAILED
(
rc
)
||
!
nameUtf16
)
{
virReportError
(
VIR_ERR_INTERNAL_ERROR
,
"%s"
,
_
(
"could not get snapshot name"
));
goto
cleanup
;
}
VBOX_UTF16_TO_UTF8
(
nameUtf16
,
&
name
);
VBOX_UTF16_FREE
(
nameUtf16
);
if
(
VIR_STRDUP
(
names
[
i
],
name
)
<
0
)
{
VBOX_UTF8_FREE
(
name
);
goto
cleanup
;
}
VBOX_UTF8_FREE
(
name
);
}
if
(
count
<=
nameslen
)
ret
=
count
;
else
ret
=
nameslen
;
cleanup:
if
(
count
>
0
)
{
for
(
i
=
0
;
i
<
count
;
i
++
)
VBOX_RELEASE
(
snapshots
[
i
]);
}
VIR_FREE
(
snapshots
);
VBOX_RELEASE
(
machine
);
vboxIIDUnalloc
(
&
iid
);
return
ret
;
}
static
virDomainSnapshotPtr
static
virDomainSnapshotPtr
vboxDomainSnapshotLookupByName
(
virDomainPtr
dom
,
vboxDomainSnapshotLookupByName
(
virDomainPtr
dom
,
const
char
*
name
,
const
char
*
name
,
...
...
src/vbox/vbox_uniformed_api.h
浏览文件 @
47eb32d3
...
@@ -578,6 +578,8 @@ vboxDomainSnapshotCreateXML(virDomainPtr dom,
...
@@ -578,6 +578,8 @@ vboxDomainSnapshotCreateXML(virDomainPtr dom,
char
*
vboxDomainSnapshotGetXMLDesc
(
virDomainSnapshotPtr
snapshot
,
char
*
vboxDomainSnapshotGetXMLDesc
(
virDomainSnapshotPtr
snapshot
,
unsigned
int
flags
);
unsigned
int
flags
);
int
vboxDomainSnapshotNum
(
virDomainPtr
dom
,
unsigned
int
flags
);
int
vboxDomainSnapshotNum
(
virDomainPtr
dom
,
unsigned
int
flags
);
int
vboxDomainSnapshotListNames
(
virDomainPtr
dom
,
char
**
names
,
int
nameslen
,
unsigned
int
flags
);
/* Version specified functions for installing uniformed API */
/* Version specified functions for installing uniformed API */
void
vbox22InstallUniformedAPI
(
vboxUniformedAPI
*
pVBoxAPI
);
void
vbox22InstallUniformedAPI
(
vboxUniformedAPI
*
pVBoxAPI
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录