Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
1fabf06c
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看板
提交
1fabf06c
编写于
3月 06, 2014
作者:
C
Chunyan Liu
提交者:
Daniel P. Berrange
3月 12, 2014
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
move virHostdevNodeDevice* to virhostdev.c
上级
de4aace4
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
92 addition
and
81 deletion
+92
-81
src/libvirt_private.syms
src/libvirt_private.syms
+3
-0
src/qemu/qemu_driver.c
src/qemu/qemu_driver.c
+0
-81
src/util/virhostdev.c
src/util/virhostdev.c
+81
-0
src/util/virhostdev.h
src/util/virhostdev.h
+8
-0
未找到文件。
src/libvirt_private.syms
浏览文件 @
1fabf06c
...
@@ -1299,6 +1299,9 @@ virHookPresent;
...
@@ -1299,6 +1299,9 @@ virHookPresent;
#util/virhostdev.h
#util/virhostdev.h
virHostdevManagerGetDefault;
virHostdevManagerGetDefault;
virHostdevPciNodeDeviceDetach;
virHostdevPciNodeDeviceReAttach;
virHostdevPciNodeDeviceReset;
virHostdevPreparePCIDevices;
virHostdevPreparePCIDevices;
virHostdevPrepareSCSIDevices;
virHostdevPrepareSCSIDevices;
virHostdevPrepareUSBDevices;
virHostdevPrepareUSBDevices;
...
...
src/qemu/qemu_driver.c
浏览文件 @
1fabf06c
...
@@ -11264,27 +11264,6 @@ out:
...
@@ -11264,27 +11264,6 @@ out:
return ret;
return ret;
}
}
static int
virHostdevPciNodeDeviceDetach(virHostdevManagerPtr hostdev_mgr,
virPCIDevicePtr pci)
{
int ret = -1;
virObjectLock(hostdev_mgr->activePciHostdevs);
virObjectLock(hostdev_mgr->inactivePciHostdevs);
if (virPCIDeviceDetach(pci, hostdev_mgr->activePciHostdevs,
hostdev_mgr->inactivePciHostdevs) < 0) {
goto out;
}
ret = 0;
out:
virObjectUnlock(hostdev_mgr->inactivePciHostdevs);
virObjectUnlock(hostdev_mgr->activePciHostdevs);
return ret;
}
static int
static int
qemuNodeDeviceDetachFlags(virNodeDevicePtr dev,
qemuNodeDeviceDetachFlags(virNodeDevicePtr dev,
const char *driverName,
const char *driverName,
...
@@ -11371,47 +11350,6 @@ qemuNodeDeviceDettach(virNodeDevicePtr dev)
...
@@ -11371,47 +11350,6 @@ qemuNodeDeviceDettach(virNodeDevicePtr dev)
return qemuNodeDeviceDetachFlags(dev, NULL, 0);
return qemuNodeDeviceDetachFlags(dev, NULL, 0);
}
}
static int
virHostdevPciNodeDeviceReAttach(virHostdevManagerPtr hostdev_mgr,
virPCIDevicePtr pci)
{
virPCIDevicePtr other;
int ret = -1;
virObjectLock(hostdev_mgr->activePciHostdevs);
virObjectLock(hostdev_mgr->inactivePciHostdevs);
other = virPCIDeviceListFind(hostdev_mgr->activePciHostdevs, pci);
if (other) {
const char *other_drvname = NULL;
const char *other_domname = NULL;
virPCIDeviceGetUsedBy(other, &other_drvname, &other_domname);
if (other_drvname && other_domname)
virReportError(VIR_ERR_OPERATION_INVALID,
_("PCI device %s is still in use by "
"driver %s, domain %s"),
virPCIDeviceGetName(pci),
other_drvname, other_domname);
else
virReportError(VIR_ERR_OPERATION_INVALID,
_("PCI device %s is still in use"),
virPCIDeviceGetName(pci));
goto out;
}
virPCIDeviceReattachInit(pci);
if (virPCIDeviceReattach(pci, hostdev_mgr->activePciHostdevs,
hostdev_mgr->inactivePciHostdevs) < 0)
goto out;
ret = 0;
out:
virObjectUnlock(hostdev_mgr->inactivePciHostdevs);
virObjectUnlock(hostdev_mgr->activePciHostdevs);
return ret;
}
static int
static int
qemuNodeDeviceReAttach(virNodeDevicePtr dev)
qemuNodeDeviceReAttach(virNodeDevicePtr dev)
{
{
...
@@ -11450,25 +11388,6 @@ cleanup:
...
@@ -11450,25 +11388,6 @@ cleanup:
return ret;
return ret;
}
}
static int
virHostdevPciNodeDeviceReset(virHostdevManagerPtr hostdev_mgr,
virPCIDevicePtr pci)
{
int ret = -1;
virObjectLock(hostdev_mgr->activePciHostdevs);
virObjectLock(hostdev_mgr->inactivePciHostdevs);
if (virPCIDeviceReset(pci, hostdev_mgr->activePciHostdevs,
hostdev_mgr->inactivePciHostdevs) < 0)
goto out;
ret = 0;
out:
virObjectUnlock(hostdev_mgr->inactivePciHostdevs);
virObjectUnlock(hostdev_mgr->activePciHostdevs);
return ret;
}
static int
static int
qemuNodeDeviceReset(virNodeDevicePtr dev)
qemuNodeDeviceReset(virNodeDevicePtr dev)
{
{
...
...
src/util/virhostdev.c
浏览文件 @
1fabf06c
...
@@ -1379,3 +1379,84 @@ virHostdevReAttachScsiHostdevs(virHostdevManagerPtr hostdev_mgr,
...
@@ -1379,3 +1379,84 @@ virHostdevReAttachScsiHostdevs(virHostdevManagerPtr hostdev_mgr,
}
}
virObjectUnlock
(
hostdev_mgr
->
activeScsiHostdevs
);
virObjectUnlock
(
hostdev_mgr
->
activeScsiHostdevs
);
}
}
int
virHostdevPciNodeDeviceDetach
(
virHostdevManagerPtr
hostdev_mgr
,
virPCIDevicePtr
pci
)
{
int
ret
=
-
1
;
virObjectLock
(
hostdev_mgr
->
activePciHostdevs
);
virObjectLock
(
hostdev_mgr
->
inactivePciHostdevs
);
if
(
virPCIDeviceDetach
(
pci
,
hostdev_mgr
->
activePciHostdevs
,
hostdev_mgr
->
inactivePciHostdevs
)
<
0
)
{
goto
out
;
}
ret
=
0
;
out:
virObjectUnlock
(
hostdev_mgr
->
inactivePciHostdevs
);
virObjectUnlock
(
hostdev_mgr
->
activePciHostdevs
);
return
ret
;
}
int
virHostdevPciNodeDeviceReAttach
(
virHostdevManagerPtr
hostdev_mgr
,
virPCIDevicePtr
pci
)
{
virPCIDevicePtr
other
;
int
ret
=
-
1
;
virObjectLock
(
hostdev_mgr
->
activePciHostdevs
);
virObjectLock
(
hostdev_mgr
->
inactivePciHostdevs
);
other
=
virPCIDeviceListFind
(
hostdev_mgr
->
activePciHostdevs
,
pci
);
if
(
other
)
{
const
char
*
other_drvname
=
NULL
;
const
char
*
other_domname
=
NULL
;
virPCIDeviceGetUsedBy
(
other
,
&
other_drvname
,
&
other_domname
);
if
(
other_drvname
&&
other_domname
)
virReportError
(
VIR_ERR_OPERATION_INVALID
,
_
(
"PCI device %s is still in use by "
"driver %s, domain %s"
),
virPCIDeviceGetName
(
pci
),
other_drvname
,
other_domname
);
else
virReportError
(
VIR_ERR_OPERATION_INVALID
,
_
(
"PCI device %s is still in use"
),
virPCIDeviceGetName
(
pci
));
goto
out
;
}
virPCIDeviceReattachInit
(
pci
);
if
(
virPCIDeviceReattach
(
pci
,
hostdev_mgr
->
activePciHostdevs
,
hostdev_mgr
->
inactivePciHostdevs
)
<
0
)
goto
out
;
ret
=
0
;
out:
virObjectUnlock
(
hostdev_mgr
->
inactivePciHostdevs
);
virObjectUnlock
(
hostdev_mgr
->
activePciHostdevs
);
return
ret
;
}
int
virHostdevPciNodeDeviceReset
(
virHostdevManagerPtr
hostdev_mgr
,
virPCIDevicePtr
pci
)
{
int
ret
=
-
1
;
virObjectLock
(
hostdev_mgr
->
activePciHostdevs
);
virObjectLock
(
hostdev_mgr
->
inactivePciHostdevs
);
if
(
virPCIDeviceReset
(
pci
,
hostdev_mgr
->
activePciHostdevs
,
hostdev_mgr
->
inactivePciHostdevs
)
<
0
)
goto
out
;
ret
=
0
;
out:
virObjectUnlock
(
hostdev_mgr
->
inactivePciHostdevs
);
virObjectUnlock
(
hostdev_mgr
->
activePciHostdevs
);
return
ret
;
}
src/util/virhostdev.h
浏览文件 @
1fabf06c
...
@@ -103,4 +103,12 @@ virHostdevUpdateActiveScsiHostdevs(virHostdevManagerPtr mgr,
...
@@ -103,4 +103,12 @@ virHostdevUpdateActiveScsiHostdevs(virHostdevManagerPtr mgr,
const
char
*
drv_name
,
const
char
*
drv_name
,
virDomainDefPtr
def
);
virDomainDefPtr
def
);
/* functions used by NodeDevDetach/Reattach/Reset */
int
virHostdevPciNodeDeviceDetach
(
virHostdevManagerPtr
mgr
,
virPCIDevicePtr
pci
);
int
virHostdevPciNodeDeviceReAttach
(
virHostdevManagerPtr
mgr
,
virPCIDevicePtr
pci
);
int
virHostdevPciNodeDeviceReset
(
virHostdevManagerPtr
mgr
,
virPCIDevicePtr
pci
);
#endif
/* __VIR_HOSTDEV_H__ */
#endif
/* __VIR_HOSTDEV_H__ */
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录