Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
b693b2fb
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,体验更适合开发者的 AI 搜索 >>
提交
b693b2fb
编写于
3月 30, 2015
作者:
J
Ján Tomko
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Emit VIR_DOMAIN_EVENT_ID_DEVICE_ADDED in the QEMU driver
Only for devices that have an alias.
上级
1882c0bd
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
39 addition
and
8 deletion
+39
-8
src/qemu/qemu_driver.c
src/qemu/qemu_driver.c
+34
-8
src/qemu/qemu_hotplug.c
src/qemu/qemu_hotplug.c
+5
-0
未找到文件。
src/qemu/qemu_driver.c
浏览文件 @
b693b2fb
...
@@ -7661,19 +7661,24 @@ qemuDomainAttachDeviceLive(virDomainObjPtr vm,
...
@@ -7661,19 +7661,24 @@ qemuDomainAttachDeviceLive(virDomainObjPtr vm,
{
{
virQEMUDriverPtr driver = dom->conn->privateData;
virQEMUDriverPtr driver = dom->conn->privateData;
int ret = -1;
int ret = -1;
const char *alias = NULL;
switch ((virDomainDeviceType) dev->type) {
switch ((virDomainDeviceType) dev->type) {
case VIR_DOMAIN_DEVICE_DISK:
case VIR_DOMAIN_DEVICE_DISK:
qemuDomainObjCheckDiskTaint(driver, vm, dev->data.disk, -1);
qemuDomainObjCheckDiskTaint(driver, vm, dev->data.disk, -1);
ret = qemuDomainAttachDeviceDiskLive(dom->conn, driver, vm, dev);
ret = qemuDomainAttachDeviceDiskLive(dom->conn, driver, vm, dev);
if (!ret)
if (!ret) {
alias = dev->data.disk->info.alias;
dev->data.disk = NULL;
dev->data.disk = NULL;
}
break;
break;
case VIR_DOMAIN_DEVICE_CONTROLLER:
case VIR_DOMAIN_DEVICE_CONTROLLER:
ret = qemuDomainAttachDeviceControllerLive(driver, vm, dev);
ret = qemuDomainAttachDeviceControllerLive(driver, vm, dev);
if (!ret)
if (!ret) {
alias = dev->data.controller->info.alias;
dev->data.controller = NULL;
dev->data.controller = NULL;
}
break;
break;
case VIR_DOMAIN_DEVICE_LEASE:
case VIR_DOMAIN_DEVICE_LEASE:
...
@@ -7687,41 +7692,52 @@ qemuDomainAttachDeviceLive(virDomainObjPtr vm,
...
@@ -7687,41 +7692,52 @@ qemuDomainAttachDeviceLive(virDomainObjPtr vm,
qemuDomainObjCheckNetTaint(driver, vm, dev->data.net, -1);
qemuDomainObjCheckNetTaint(driver, vm, dev->data.net, -1);
ret = qemuDomainAttachNetDevice(dom->conn, driver, vm,
ret = qemuDomainAttachNetDevice(dom->conn, driver, vm,
dev->data.net);
dev->data.net);
if (!ret)
if (!ret) {
alias = dev->data.net->info.alias;
dev->data.net = NULL;
dev->data.net = NULL;
}
break;
break;
case VIR_DOMAIN_DEVICE_HOSTDEV:
case VIR_DOMAIN_DEVICE_HOSTDEV:
qemuDomainObjCheckHostdevTaint(driver, vm, dev->data.hostdev, -1);
qemuDomainObjCheckHostdevTaint(driver, vm, dev->data.hostdev, -1);
ret = qemuDomainAttachHostDevice(dom->conn, driver, vm,
ret = qemuDomainAttachHostDevice(dom->conn, driver, vm,
dev->data.hostdev);
dev->data.hostdev);
if (!ret)
if (!ret) {
alias = dev->data.hostdev->info->alias;
dev->data.hostdev = NULL;
dev->data.hostdev = NULL;
}
break;
break;
case VIR_DOMAIN_DEVICE_REDIRDEV:
case VIR_DOMAIN_DEVICE_REDIRDEV:
ret = qemuDomainAttachRedirdevDevice(driver, vm,
ret = qemuDomainAttachRedirdevDevice(driver, vm,
dev->data.redirdev);
dev->data.redirdev);
if (!ret)
if (!ret) {
alias = dev->data.redirdev->info.alias;
dev->data.redirdev = NULL;
dev->data.redirdev = NULL;
}
break;
break;
case VIR_DOMAIN_DEVICE_CHR:
case VIR_DOMAIN_DEVICE_CHR:
ret = qemuDomainAttachChrDevice(driver, vm,
ret = qemuDomainAttachChrDevice(driver, vm,
dev->data.chr);
dev->data.chr);
if (!ret)
if (!ret) {
alias = dev->data.chr->info.alias;
dev->data.chr = NULL;
dev->data.chr = NULL;
}
break;
break;
case VIR_DOMAIN_DEVICE_RNG:
case VIR_DOMAIN_DEVICE_RNG:
ret = qemuDomainAttachRNGDevice(driver, vm,
ret = qemuDomainAttachRNGDevice(driver, vm,
dev->data.rng);
dev->data.rng);
if (!ret)
if (!ret) {
alias = dev->data.rng->info.alias;
dev->data.rng = NULL;
dev->data.rng = NULL;
}
break;
break;
case VIR_DOMAIN_DEVICE_MEMORY:
case VIR_DOMAIN_DEVICE_MEMORY:
/* note that qemuDomainAttachMemory always consumes dev->data.memory */
/* note that qemuDomainAttachMemory always consumes dev->data.memory
* and dispatches DeviceAdded event on success */
ret = qemuDomainAttachMemory(driver, vm,
ret = qemuDomainAttachMemory(driver, vm,
dev->data.memory);
dev->data.memory);
dev->data.memory = NULL;
dev->data.memory = NULL;
...
@@ -7748,6 +7764,16 @@ qemuDomainAttachDeviceLive(virDomainObjPtr vm,
...
@@ -7748,6 +7764,16 @@ qemuDomainAttachDeviceLive(virDomainObjPtr vm,
break;
break;
}
}
if (alias) {
/* queue the event before the alias has a chance to get freed
* if the domain disappears while qemuDomainUpdateDeviceList
* is in monitor */
virObjectEventPtr event;
event = virDomainEventDeviceAddedNewFromObj(vm, alias);
if (event)
qemuDomainEventQueue(driver, event);
}
if (ret == 0)
if (ret == 0)
ret = qemuDomainUpdateDeviceList(driver, vm, QEMU_ASYNC_JOB_NONE);
ret = qemuDomainUpdateDeviceList(driver, vm, QEMU_ASYNC_JOB_NONE);
...
...
src/qemu/qemu_hotplug.c
浏览文件 @
b693b2fb
...
@@ -1726,6 +1726,7 @@ qemuDomainAttachMemory(virQEMUDriverPtr driver,
...
@@ -1726,6 +1726,7 @@ qemuDomainAttachMemory(virQEMUDriverPtr driver,
char
*
objalias
=
NULL
;
char
*
objalias
=
NULL
;
const
char
*
backendType
;
const
char
*
backendType
;
virJSONValuePtr
props
=
NULL
;
virJSONValuePtr
props
=
NULL
;
virObjectEventPtr
event
;
int
id
;
int
id
;
int
ret
=
-
1
;
int
ret
=
-
1
;
...
@@ -1769,6 +1770,10 @@ qemuDomainAttachMemory(virQEMUDriverPtr driver,
...
@@ -1769,6 +1770,10 @@ qemuDomainAttachMemory(virQEMUDriverPtr driver,
goto
cleanup
;
goto
cleanup
;
}
}
event
=
virDomainEventDeviceAddedNewFromObj
(
vm
,
objalias
);
if
(
event
)
qemuDomainEventQueue
(
driver
,
event
);
/* mem is consumed by vm->def */
/* mem is consumed by vm->def */
mem
=
NULL
;
mem
=
NULL
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录