Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
e08d2a9a
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看板
提交
e08d2a9a
编写于
1月 18, 2012
作者:
J
Jiri Denemark
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
virsh: Implement domblkerror command
This command lists all disk devices with errors
上级
e17e3ed6
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
85 addition
and
0 deletion
+85
-0
tools/virsh.c
tools/virsh.c
+78
-0
tools/virsh.pod
tools/virsh.pod
+7
-0
未找到文件。
tools/virsh.c
浏览文件 @
e08d2a9a
...
...
@@ -16036,6 +16036,83 @@ cleanup:
return ret;
}
/*
* "domblkerror" command
*/
static const char *
vshDomainIOErrorToString(int error)
{
switch ((virDomainDiskErrorCode) error) {
case VIR_DOMAIN_DISK_ERROR_NONE:
return _("no error");
case VIR_DOMAIN_DISK_ERROR_UNSPEC:
return _("unspecified error");
case VIR_DOMAIN_DISK_ERROR_NO_SPACE:
return _("no space");
case VIR_DOMAIN_DISK_ERROR_LAST:
;
}
return _("unknown error");
}
static const vshCmdInfo info_domblkerror[] = {
{"help", N_("Show errors on block devices")},
{"desc", N_("Show block device errors")},
{NULL, NULL}
};
static const vshCmdOptDef opts_domblkerror[] = {
{"domain", VSH_OT_DATA, VSH_OFLAG_REQ, N_("domain name, id, or uuid")},
{NULL, 0, 0, NULL}
};
static bool
cmdDomBlkError(vshControl *ctl, const vshCmd *cmd)
{
virDomainPtr dom;
virDomainDiskErrorPtr disks = NULL;
unsigned int ndisks;
int i;
int count;
bool ret = false;
if (!vshConnectionUsability(ctl, ctl->conn))
return false;
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
return false;
if ((count = virDomainGetDiskErrors(dom, NULL, 0, 0)) < 0)
goto cleanup;
ndisks = count;
if (ndisks) {
if (VIR_ALLOC_N(disks, ndisks) < 0)
goto cleanup;
if ((count = virDomainGetDiskErrors(dom, disks, ndisks, 0)) == -1)
goto cleanup;
}
if (count == 0) {
vshPrint(ctl, _("No errors found\n"));
} else {
for (i = 0; i < count; i++) {
vshPrint(ctl, "%s: %s\n",
disks[i].disk,
vshDomainIOErrorToString(disks[i].error));
}
}
ret = true;
cleanup:
VIR_FREE(disks);
virDomainFree(dom);
return ret;
}
/*
* "qemu-monitor-command" command
*/
...
...
@@ -16236,6 +16313,7 @@ static const vshCmdDef domManagementCmds[] = {
};
static const vshCmdDef domMonitoringCmds[] = {
{"domblkerror", cmdDomBlkError, opts_domblkerror, info_domblkerror, 0},
{"domblkinfo", cmdDomblkinfo, opts_domblkinfo, info_domblkinfo, 0},
{"domblklist", cmdDomblklist, opts_domblklist, info_domblklist, 0},
{"domblkstat", cmdDomblkstat, opts_domblkstat, info_domblkstat, 0},
...
...
tools/virsh.pod
浏览文件 @
e08d2a9a
...
...
@@ -507,6 +507,13 @@ on hypervisor.
Get memory stats for a running domain.
=item B<domblkerror> I<domain-id>
Show errors on block devices. This command usually comes handy when
B<domstate> command says that a domain was paused due to I/O error.
The B<domblkerror> command lists all block devices in error state and
the error seen on each of them.
=item B<domblkinfo> I<domain> I<block-device>
Get block device size info for a domain. A I<block-device> corresponds
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录