Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
1fcafb02
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看板
提交
1fcafb02
编写于
5月 06, 2011
作者:
C
Cole Robinson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
storage: iscsi: Convert virExec to virCommand
v2: Use virCommand auto-cleanup
上级
5b77f1d5
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
11 addition
and
12 deletion
+11
-12
src/storage/storage_backend_iscsi.c
src/storage/storage_backend_iscsi.c
+11
-12
未找到文件。
src/storage/storage_backend_iscsi.c
浏览文件 @
1fcafb02
...
...
@@ -184,28 +184,23 @@ virStorageBackendIQNFound(const char *initiatoriqn,
int
ret
=
IQN_MISSING
,
fd
=
-
1
;
char
ebuf
[
64
];
FILE
*
fp
=
NULL
;
pid_t
child
=
0
;
char
*
line
=
NULL
,
*
newline
=
NULL
,
*
iqn
=
NULL
,
*
token
=
NULL
,
*
saveptr
=
NULL
;
const
char
*
const
prog
[]
=
{
ISCSIADM
,
"--mode"
,
"iface"
,
NULL
};
virCommandPtr
cmd
=
virCommandNewArgList
(
ISCSIADM
,
"--mode"
,
"iface"
,
NULL
);
if
(
VIR_ALLOC_N
(
line
,
LINE_SIZE
)
!=
0
)
{
ret
=
IQN_ERROR
;
virStorageReportError
(
VIR_ERR_INTERNAL_ERROR
,
_
(
"Could not allocate memory for output of '%s'"
),
prog
[
0
]
);
ISCSIADM
);
goto
out
;
}
memset
(
line
,
0
,
LINE_SIZE
);
if
(
virExec
(
prog
,
NULL
,
NULL
,
&
child
,
-
1
,
&
fd
,
NULL
,
VIR_EXEC_NONE
)
<
0
)
{
virStorageReportError
(
VIR_ERR_INTERNAL_ERROR
,
_
(
"Failed to run '%s' when looking for existing interface with IQN '%s'"
),
prog
[
0
],
initiatoriqn
);
virCommandSetOutputFD
(
cmd
,
&
fd
);
if
(
virCommandRunAsync
(
cmd
,
NULL
)
<
0
)
{
ret
=
IQN_ERROR
;
goto
out
;
}
...
...
@@ -214,7 +209,7 @@ virStorageBackendIQNFound(const char *initiatoriqn,
virStorageReportError
(
VIR_ERR_INTERNAL_ERROR
,
_
(
"Failed to open stream for file descriptor "
"when reading output from '%s': '%s'"
),
prog
[
0
]
,
virStrerror
(
errno
,
ebuf
,
sizeof
ebuf
));
ISCSIADM
,
virStrerror
(
errno
,
ebuf
,
sizeof
ebuf
));
ret
=
IQN_ERROR
;
goto
out
;
}
...
...
@@ -226,7 +221,7 @@ virStorageBackendIQNFound(const char *initiatoriqn,
virStorageReportError
(
VIR_ERR_INTERNAL_ERROR
,
_
(
"Unexpected line > %d characters "
"when parsing output of '%s'"
),
LINE_SIZE
,
prog
[
0
]
);
LINE_SIZE
,
ISCSIADM
);
goto
out
;
}
*
newline
=
'\0'
;
...
...
@@ -251,6 +246,9 @@ virStorageBackendIQNFound(const char *initiatoriqn,
}
}
if
(
virCommandWait
(
cmd
,
NULL
)
<
0
)
ret
=
IQN_ERROR
;
out:
if
(
ret
==
IQN_MISSING
)
{
VIR_DEBUG
(
"Could not find interface with IQN '%s'"
,
iqn
);
...
...
@@ -259,6 +257,7 @@ out:
VIR_FREE
(
line
);
VIR_FORCE_FCLOSE
(
fp
);
VIR_FORCE_CLOSE
(
fd
);
virCommandFree
(
cmd
);
return
ret
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录