Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
7920d97a
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,发现更多精彩内容 >>
提交
7920d97a
编写于
7月 26, 2017
作者:
J
John Ferlan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
storage: Use virStoragePoolObjGetDef accessor for Logical backend
In preparation for privatizing the object, use the accessor.
上级
cd3eecd8
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
37 addition
and
26 deletion
+37
-26
src/storage/storage_backend_logical.c
src/storage/storage_backend_logical.c
+37
-26
未找到文件。
src/storage/storage_backend_logical.c
浏览文件 @
7920d97a
...
...
@@ -53,10 +53,11 @@ virStorageBackendLogicalSetActive(virStoragePoolObjPtr pool,
int
on
)
{
int
ret
;
virStoragePoolDefPtr
def
=
virStoragePoolObjGetDef
(
pool
);
virCommandPtr
cmd
=
virCommandNewArgList
(
VGCHANGE
,
on
?
"-aly"
:
"-aln"
,
pool
->
def
->
source
.
name
,
def
->
source
.
name
,
NULL
);
ret
=
virCommandRun
(
cmd
,
NULL
);
...
...
@@ -266,6 +267,7 @@ virStorageBackendLogicalMakeVol(char **const groups,
{
struct
virStorageBackendLogicalPoolVolData
*
data
=
opaque
;
virStoragePoolObjPtr
pool
=
data
->
pool
;
virStoragePoolDefPtr
def
=
virStoragePoolObjGetDef
(
pool
);
virStorageVolDefPtr
vol
=
NULL
;
bool
is_new_vol
=
false
;
int
ret
=
-
1
;
...
...
@@ -309,7 +311,7 @@ virStorageBackendLogicalMakeVol(char **const groups,
if
(
vol
->
target
.
path
==
NULL
)
{
if
(
virAsprintf
(
&
vol
->
target
.
path
,
"%s/%s"
,
pool
->
def
->
target
.
path
,
vol
->
name
)
<
0
)
def
->
target
.
path
,
vol
->
name
)
<
0
)
goto
cleanup
;
}
...
...
@@ -334,7 +336,7 @@ virStorageBackendLogicalMakeVol(char **const groups,
goto
cleanup
;
if
(
virAsprintf
(
&
vol
->
target
.
backingStore
->
path
,
"%s/%s"
,
pool
->
def
->
target
.
path
,
groups
[
1
])
<
0
)
def
->
target
.
path
,
groups
[
1
])
<
0
)
goto
cleanup
;
vol
->
target
.
backingStore
->
format
=
VIR_STORAGE_POOL_LOGICAL_LVM2
;
...
...
@@ -433,6 +435,7 @@ virStorageBackendLogicalFindLVs(virStoragePoolObjPtr pool,
};
int
ret
=
-
1
;
virCommandPtr
cmd
;
virStoragePoolDefPtr
def
=
virStoragePoolObjGetDef
(
pool
);
struct
virStorageBackendLogicalPoolVolData
cbdata
=
{
.
pool
=
pool
,
.
vol
=
vol
,
...
...
@@ -446,7 +449,7 @@ virStorageBackendLogicalFindLVs(virStoragePoolObjPtr pool,
"--nosuffix"
,
"--options"
,
"lv_name,origin,uuid,devices,segtype,stripes,seg_size,vg_extent_size,size,lv_attr"
,
pool
->
def
->
source
.
name
,
def
->
source
.
name
,
NULL
);
if
(
virCommandRunRegex
(
cmd
,
1
,
...
...
@@ -469,11 +472,13 @@ virStorageBackendLogicalRefreshPoolFunc(char **const groups,
void
*
data
)
{
virStoragePoolObjPtr
pool
=
data
;
if
(
virStrToLong_ull
(
groups
[
0
],
NULL
,
10
,
&
pool
->
def
->
capacity
)
<
0
)
virStoragePoolDefPtr
def
=
virStoragePoolObjGetDef
(
pool
);
if
(
virStrToLong_ull
(
groups
[
0
],
NULL
,
10
,
&
def
->
capacity
)
<
0
)
return
-
1
;
if
(
virStrToLong_ull
(
groups
[
1
],
NULL
,
10
,
&
pool
->
def
->
available
)
<
0
)
if
(
virStrToLong_ull
(
groups
[
1
],
NULL
,
10
,
&
def
->
available
)
<
0
)
return
-
1
;
pool
->
def
->
allocation
=
pool
->
def
->
capacity
-
pool
->
def
->
available
;
def
->
allocation
=
def
->
capacity
-
def
->
available
;
return
0
;
}
...
...
@@ -631,6 +636,7 @@ virStorageBackendLogicalFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSED,
static
bool
virStorageBackendLogicalMatchPoolSource
(
virStoragePoolObjPtr
pool
)
{
virStoragePoolDefPtr
def
=
virStoragePoolObjGetDef
(
pool
);
virStoragePoolSourceList
sourceList
;
virStoragePoolSource
*
thisSource
=
NULL
;
size_t
i
,
j
;
...
...
@@ -646,14 +652,14 @@ virStorageBackendLogicalMatchPoolSource(virStoragePoolObjPtr pool)
/* Search the pvs output for this pool's source.name */
for
(
i
=
0
;
i
<
sourceList
.
nsources
;
i
++
)
{
thisSource
=
&
sourceList
.
sources
[
i
];
if
(
STREQ
(
thisSource
->
name
,
pool
->
def
->
source
.
name
))
if
(
STREQ
(
thisSource
->
name
,
def
->
source
.
name
))
break
;
}
if
(
i
==
sourceList
.
nsources
)
{
virReportError
(
VIR_ERR_CONFIG_UNSUPPORTED
,
_
(
"cannot find logical volume group name '%s'"
),
pool
->
def
->
source
.
name
);
def
->
source
.
name
);
goto
cleanup
;
}
...
...
@@ -661,7 +667,7 @@ virStorageBackendLogicalMatchPoolSource(virStoragePoolObjPtr pool)
* they match as well; otherwise, matching can only occur on the
* pool's name.
*/
if
(
!
pool
->
def
->
source
.
ndevice
)
{
if
(
!
def
->
source
.
ndevice
)
{
ret
=
true
;
goto
cleanup
;
}
...
...
@@ -669,9 +675,9 @@ virStorageBackendLogicalMatchPoolSource(virStoragePoolObjPtr pool)
/* Let's make sure the pool's device(s) match what the pvs output has
* for volume group devices.
*/
for
(
i
=
0
;
i
<
pool
->
def
->
source
.
ndevice
;
i
++
)
{
for
(
i
=
0
;
i
<
def
->
source
.
ndevice
;
i
++
)
{
for
(
j
=
0
;
j
<
thisSource
->
ndevice
;
j
++
)
{
if
(
STREQ
(
pool
->
def
->
source
.
devices
[
i
].
path
,
if
(
STREQ
(
def
->
source
.
devices
[
i
].
path
,
thisSource
->
devices
[
j
].
path
))
matchcount
++
;
}
...
...
@@ -683,7 +689,7 @@ virStorageBackendLogicalMatchPoolSource(virStoragePoolObjPtr pool)
if
(
matchcount
==
0
)
{
virReportError
(
VIR_ERR_CONFIG_UNSUPPORTED
,
_
(
"cannot find any matching source devices for logical "
"volume group '%s'"
),
pool
->
def
->
source
.
name
);
"volume group '%s'"
),
def
->
source
.
name
);
goto
cleanup
;
}
...
...
@@ -692,7 +698,7 @@ virStorageBackendLogicalMatchPoolSource(virStoragePoolObjPtr pool)
* to 'add' to or 'remove' from the volume group outside of libvirt's
* knowledge. Rather than fail on that, provide a warning and move on.
*/
if
(
matchcount
!=
pool
->
def
->
source
.
ndevice
)
if
(
matchcount
!=
def
->
source
.
ndevice
)
VIR_WARN
(
"pool device list count doesn't match pvs device list count"
);
ret
=
true
;
...
...
@@ -710,10 +716,12 @@ static int
virStorageBackendLogicalCheckPool
(
virStoragePoolObjPtr
pool
,
bool
*
isActive
)
{
virStoragePoolDefPtr
def
=
virStoragePoolObjGetDef
(
pool
);
/* If we can find the target.path as well as ensure that the
* pool's def source
*/
*
isActive
=
virFileExists
(
pool
->
def
->
target
.
path
)
&&
*
isActive
=
virFileExists
(
def
->
target
.
path
)
&&
virStorageBackendLogicalMatchPoolSource
(
pool
);
return
0
;
}
...
...
@@ -738,6 +746,7 @@ virStorageBackendLogicalBuildPool(virConnectPtr conn ATTRIBUTE_UNUSED,
virStoragePoolObjPtr
pool
,
unsigned
int
flags
)
{
virStoragePoolDefPtr
def
=
virStoragePoolObjGetDef
(
pool
);
virCommandPtr
vgcmd
=
NULL
;
int
ret
=
-
1
;
size_t
i
=
0
;
...
...
@@ -749,10 +758,10 @@ virStorageBackendLogicalBuildPool(virConnectPtr conn ATTRIBUTE_UNUSED,
VIR_STORAGE_POOL_BUILD_NO_OVERWRITE
,
cleanup
);
vgcmd
=
virCommandNewArgList
(
VGCREATE
,
pool
->
def
->
source
.
name
,
NULL
);
vgcmd
=
virCommandNewArgList
(
VGCREATE
,
def
->
source
.
name
,
NULL
);
for
(
i
=
0
;
i
<
pool
->
def
->
source
.
ndevice
;
i
++
)
{
const
char
*
path
=
pool
->
def
->
source
.
devices
[
i
].
path
;
for
(
i
=
0
;
i
<
def
->
source
.
ndevice
;
i
++
)
{
const
char
*
path
=
def
->
source
.
devices
[
i
].
path
;
/* The blkid FS and Part probing code doesn't know "lvm2" (this
* pool's only format type), but it does know "LVM2_member", so
...
...
@@ -782,7 +791,7 @@ virStorageBackendLogicalBuildPool(virConnectPtr conn ATTRIBUTE_UNUSED,
if
(
ret
<
0
)
{
size_t
j
;
for
(
j
=
0
;
j
<
i
;
j
++
)
virStorageBackendLogicalRemoveDevice
(
pool
->
def
->
source
.
devices
[
j
].
path
);
virStorageBackendLogicalRemoveDevice
(
def
->
source
.
devices
[
j
].
path
);
}
return
ret
;
}
...
...
@@ -806,6 +815,7 @@ virStorageBackendLogicalRefreshPool(virConnectPtr conn ATTRIBUTE_UNUSED,
int
vars
[]
=
{
2
};
virStoragePoolDefPtr
def
=
virStoragePoolObjGetDef
(
pool
);
virCommandPtr
cmd
=
NULL
;
int
ret
=
-
1
;
...
...
@@ -822,7 +832,7 @@ virStorageBackendLogicalRefreshPool(virConnectPtr conn ATTRIBUTE_UNUSED,
"--unbuffered"
,
"--nosuffix"
,
"--options"
,
"vg_size,vg_free"
,
pool
->
def
->
source
.
name
,
def
->
source
.
name
,
NULL
);
/* Now get basic volgrp metadata */
...
...
@@ -865,6 +875,7 @@ virStorageBackendLogicalDeletePool(virConnectPtr conn ATTRIBUTE_UNUSED,
virStoragePoolObjPtr
pool
,
unsigned
int
flags
)
{
virStoragePoolDefPtr
def
=
virStoragePoolObjGetDef
(
pool
);
virCommandPtr
cmd
=
NULL
;
size_t
i
;
int
ret
=
-
1
;
...
...
@@ -873,14 +884,14 @@ virStorageBackendLogicalDeletePool(virConnectPtr conn ATTRIBUTE_UNUSED,
/* first remove the volume group */
cmd
=
virCommandNewArgList
(
VGREMOVE
,
"-f"
,
pool
->
def
->
source
.
name
,
"-f"
,
def
->
source
.
name
,
NULL
);
if
(
virCommandRun
(
cmd
,
NULL
)
<
0
)
goto
cleanup
;
/* now remove the pv devices and clear them out */
for
(
i
=
0
;
i
<
pool
->
def
->
source
.
ndevice
;
i
++
)
virStorageBackendLogicalRemoveDevice
(
pool
->
def
->
source
.
devices
[
i
].
path
);
for
(
i
=
0
;
i
<
def
->
source
.
ndevice
;
i
++
)
virStorageBackendLogicalRemoveDevice
(
def
->
source
.
devices
[
i
].
path
);
ret
=
0
;
...
...
@@ -931,6 +942,7 @@ virStorageBackendLogicalCreateVol(virConnectPtr conn,
virStorageVolDefPtr
vol
)
{
int
fd
=
-
1
;
virStoragePoolDefPtr
def
=
virStoragePoolObjGetDef
(
pool
);
virCommandPtr
cmd
=
NULL
;
virErrorPtr
err
;
struct
stat
sb
;
...
...
@@ -947,8 +959,7 @@ virStorageBackendLogicalCreateVol(virConnectPtr conn,
VIR_FREE
(
vol
->
target
.
path
);
if
(
virAsprintf
(
&
vol
->
target
.
path
,
"%s/%s"
,
pool
->
def
->
target
.
path
,
vol
->
name
)
<
0
)
def
->
target
.
path
,
vol
->
name
)
<
0
)
return
-
1
;
cmd
=
virCommandNewArgList
(
LVCREATE
,
...
...
@@ -968,7 +979,7 @@ virStorageBackendLogicalCreateVol(virConnectPtr conn,
if
(
vol
->
target
.
backingStore
)
virCommandAddArgList
(
cmd
,
"-s"
,
vol
->
target
.
backingStore
->
path
,
NULL
);
else
virCommandAddArg
(
cmd
,
pool
->
def
->
source
.
name
);
virCommandAddArg
(
cmd
,
def
->
source
.
name
);
if
(
virCommandRun
(
cmd
,
NULL
)
<
0
)
goto
error
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录