Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
de658ab4
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,发现更多精彩内容 >>
提交
de658ab4
编写于
5月 19, 2009
作者:
D
Daniel P. Berrange
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix misc locking bugs identified by lock checker
上级
6962a2dd
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
50 addition
and
32 deletion
+50
-32
ChangeLog
ChangeLog
+20
-0
src/network_driver.c
src/network_driver.c
+3
-3
src/qemu_driver.c
src/qemu_driver.c
+17
-25
src/storage_driver.c
src/storage_driver.c
+5
-2
src/test.c
src/test.c
+3
-0
src/uml_driver.c
src/uml_driver.c
+2
-2
未找到文件。
ChangeLog
浏览文件 @
de658ab4
Tue May 19 12:04:22 BST 2009 Daniel P. Berrange <berrange@redhat.com>
Fix misc locking bugs identified by lock checker
* src/test.c: Add missing driver lock calls in testOpen()
* src/uml_driver.c: Remove bogus driver unlock call in
umlDomainStart. Ensure driver lock is held for the duration
of umlDomainSetAutostart.
* src/network_driver.c: Ensure driver lock is held for the
duration of networkStart, networkDestroy and networkSetAutostart
* src/storage_driver.c: Ensure driver lock is held for the
duration of storagePoolRefresh, and storagePoolSetAutostart.
Ensure driver is locked before re-obtaining pool lock in
storageVolumeCreateXML.
* src/qemu_driver.c: Ensure lock is held when removing domain
event callbacks in qemudClose(). Drop driver lock before calling
qemudAutostartConfigs, since that will obtain a lock when calling
virConnectClose. Hold lock across duration of suspend, resume,
start, get security label, device attach and device detach
operations.
Tue May 19 11:10:22 BST 2009 Daniel P. Berrange <berrange@redhat.com>
Tue May 19 11:10:22 BST 2009 Daniel P. Berrange <berrange@redhat.com>
Add an optional OCaml+CIL mutex lock checker
Add an optional OCaml+CIL mutex lock checker
...
...
src/network_driver.c
浏览文件 @
de658ab4
...
@@ -1217,7 +1217,6 @@ static int networkStart(virNetworkPtr net) {
...
@@ -1217,7 +1217,6 @@ static int networkStart(virNetworkPtr net) {
networkDriverLock
(
driver
);
networkDriverLock
(
driver
);
network
=
virNetworkFindByUUID
(
&
driver
->
networks
,
net
->
uuid
);
network
=
virNetworkFindByUUID
(
&
driver
->
networks
,
net
->
uuid
);
networkDriverUnlock
(
driver
);
if
(
!
network
)
{
if
(
!
network
)
{
networkReportError
(
net
->
conn
,
NULL
,
net
,
VIR_ERR_INVALID_NETWORK
,
networkReportError
(
net
->
conn
,
NULL
,
net
,
VIR_ERR_INVALID_NETWORK
,
...
@@ -1230,6 +1229,7 @@ static int networkStart(virNetworkPtr net) {
...
@@ -1230,6 +1229,7 @@ static int networkStart(virNetworkPtr net) {
cleanup:
cleanup:
if
(
network
)
if
(
network
)
virNetworkObjUnlock
(
network
);
virNetworkObjUnlock
(
network
);
networkDriverUnlock
(
driver
);
return
ret
;
return
ret
;
}
}
...
@@ -1240,7 +1240,6 @@ static int networkDestroy(virNetworkPtr net) {
...
@@ -1240,7 +1240,6 @@ static int networkDestroy(virNetworkPtr net) {
networkDriverLock
(
driver
);
networkDriverLock
(
driver
);
network
=
virNetworkFindByUUID
(
&
driver
->
networks
,
net
->
uuid
);
network
=
virNetworkFindByUUID
(
&
driver
->
networks
,
net
->
uuid
);
networkDriverUnlock
(
driver
);
if
(
!
network
)
{
if
(
!
network
)
{
networkReportError
(
net
->
conn
,
NULL
,
net
,
VIR_ERR_INVALID_NETWORK
,
networkReportError
(
net
->
conn
,
NULL
,
net
,
VIR_ERR_INVALID_NETWORK
,
...
@@ -1258,6 +1257,7 @@ static int networkDestroy(virNetworkPtr net) {
...
@@ -1258,6 +1257,7 @@ static int networkDestroy(virNetworkPtr net) {
cleanup:
cleanup:
if
(
network
)
if
(
network
)
virNetworkObjUnlock
(
network
);
virNetworkObjUnlock
(
network
);
networkDriverUnlock
(
driver
);
return
ret
;
return
ret
;
}
}
...
@@ -1349,7 +1349,6 @@ static int networkSetAutostart(virNetworkPtr net,
...
@@ -1349,7 +1349,6 @@ static int networkSetAutostart(virNetworkPtr net,
networkDriverLock
(
driver
);
networkDriverLock
(
driver
);
network
=
virNetworkFindByUUID
(
&
driver
->
networks
,
net
->
uuid
);
network
=
virNetworkFindByUUID
(
&
driver
->
networks
,
net
->
uuid
);
networkDriverUnlock
(
driver
);
if
(
!
network
)
{
if
(
!
network
)
{
networkReportError
(
net
->
conn
,
NULL
,
net
,
VIR_ERR_INVALID_NETWORK
,
networkReportError
(
net
->
conn
,
NULL
,
net
,
VIR_ERR_INVALID_NETWORK
,
...
@@ -1399,6 +1398,7 @@ cleanup:
...
@@ -1399,6 +1398,7 @@ cleanup:
VIR_FREE
(
autostartLink
);
VIR_FREE
(
autostartLink
);
if
(
network
)
if
(
network
)
virNetworkObjUnlock
(
network
);
virNetworkObjUnlock
(
network
);
networkDriverUnlock
(
driver
);
return
ret
;
return
ret
;
}
}
...
...
src/qemu_driver.c
浏览文件 @
de658ab4
...
@@ -215,6 +215,7 @@ qemudAutostartConfigs(struct qemud_driver *driver) {
...
@@ -215,6 +215,7 @@ qemudAutostartConfigs(struct qemud_driver *driver) {
"qemu:///system"
);
"qemu:///system"
);
/* Ignoring NULL conn which is mostly harmless here */
/* Ignoring NULL conn which is mostly harmless here */
qemuDriverLock
(
driver
);
for
(
i
=
0
;
i
<
driver
->
domains
.
count
;
i
++
)
{
for
(
i
=
0
;
i
<
driver
->
domains
.
count
;
i
++
)
{
virDomainObjPtr
vm
=
driver
->
domains
.
objs
[
i
];
virDomainObjPtr
vm
=
driver
->
domains
.
objs
[
i
];
virDomainObjLock
(
vm
);
virDomainObjLock
(
vm
);
...
@@ -237,6 +238,7 @@ qemudAutostartConfigs(struct qemud_driver *driver) {
...
@@ -237,6 +238,7 @@ qemudAutostartConfigs(struct qemud_driver *driver) {
}
}
virDomainObjUnlock
(
vm
);
virDomainObjUnlock
(
vm
);
}
}
qemuDriverUnlock
(
driver
);
if
(
conn
)
if
(
conn
)
virConnectClose
(
conn
);
virConnectClose
(
conn
);
...
@@ -519,9 +521,10 @@ qemudStartup(void) {
...
@@ -519,9 +521,10 @@ qemudStartup(void) {
NULL
,
NULL
)
<
0
)
NULL
,
NULL
)
<
0
)
goto
error
;
goto
error
;
qemudReconnectVMs
(
qemu_driver
);
qemudReconnectVMs
(
qemu_driver
);
qemuDriverUnlock
(
qemu_driver
);
qemudAutostartConfigs
(
qemu_driver
);
qemudAutostartConfigs
(
qemu_driver
);
qemuDriverUnlock
(
qemu_driver
);
return
0
;
return
0
;
...
@@ -567,9 +570,9 @@ qemudReload(void) {
...
@@ -567,9 +570,9 @@ qemudReload(void) {
qemu_driver
->
configDir
,
qemu_driver
->
configDir
,
qemu_driver
->
autostartDir
,
qemu_driver
->
autostartDir
,
qemudNotifyLoadDomain
,
qemu_driver
);
qemudNotifyLoadDomain
,
qemu_driver
);
qemuDriverUnlock
(
qemu_driver
);
qemudAutostartConfigs
(
qemu_driver
);
qemudAutostartConfigs
(
qemu_driver
);
qemuDriverUnlock
(
qemu_driver
);
return
0
;
return
0
;
}
}
...
@@ -1812,7 +1815,9 @@ static int qemudClose(virConnectPtr conn) {
...
@@ -1812,7 +1815,9 @@ static int qemudClose(virConnectPtr conn) {
struct
qemud_driver
*
driver
=
conn
->
privateData
;
struct
qemud_driver
*
driver
=
conn
->
privateData
;
/* Get rid of callbacks registered for this conn */
/* Get rid of callbacks registered for this conn */
qemuDriverLock
(
driver
);
virDomainEventCallbackListRemoveConn
(
conn
,
driver
->
domainEventCallbacks
);
virDomainEventCallbackListRemoveConn
(
conn
,
driver
->
domainEventCallbacks
);
qemuDriverUnlock
(
driver
);
conn
->
privateData
=
NULL
;
conn
->
privateData
=
NULL
;
...
@@ -2229,7 +2234,6 @@ static int qemudDomainSuspend(virDomainPtr dom) {
...
@@ -2229,7 +2234,6 @@ static int qemudDomainSuspend(virDomainPtr dom) {
qemuDriverLock
(
driver
);
qemuDriverLock
(
driver
);
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
qemuDriverUnlock
(
driver
);
if
(
!
vm
)
{
if
(
!
vm
)
{
char
uuidstr
[
VIR_UUID_STRING_BUFLEN
];
char
uuidstr
[
VIR_UUID_STRING_BUFLEN
];
...
@@ -2264,11 +2268,9 @@ cleanup:
...
@@ -2264,11 +2268,9 @@ cleanup:
if
(
vm
)
if
(
vm
)
virDomainObjUnlock
(
vm
);
virDomainObjUnlock
(
vm
);
if
(
event
)
{
if
(
event
)
qemuDriverLock
(
driver
);
qemuDomainEventQueue
(
driver
,
event
);
qemuDomainEventQueue
(
driver
,
event
);
qemuDriverUnlock
(
driver
);
qemuDriverUnlock
(
driver
);
}
return
ret
;
return
ret
;
}
}
...
@@ -2282,7 +2284,6 @@ static int qemudDomainResume(virDomainPtr dom) {
...
@@ -2282,7 +2284,6 @@ static int qemudDomainResume(virDomainPtr dom) {
qemuDriverLock
(
driver
);
qemuDriverLock
(
driver
);
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
qemuDriverUnlock
(
driver
);
if
(
!
vm
)
{
if
(
!
vm
)
{
char
uuidstr
[
VIR_UUID_STRING_BUFLEN
];
char
uuidstr
[
VIR_UUID_STRING_BUFLEN
];
...
@@ -2316,11 +2317,9 @@ static int qemudDomainResume(virDomainPtr dom) {
...
@@ -2316,11 +2317,9 @@ static int qemudDomainResume(virDomainPtr dom) {
cleanup:
cleanup:
if
(
vm
)
if
(
vm
)
virDomainObjUnlock
(
vm
);
virDomainObjUnlock
(
vm
);
if
(
event
)
{
if
(
event
)
qemuDriverLock
(
driver
);
qemuDomainEventQueue
(
driver
,
event
);
qemuDomainEventQueue
(
driver
,
event
);
qemuDriverUnlock
(
driver
);
qemuDriverUnlock
(
driver
);
}
return
ret
;
return
ret
;
}
}
...
@@ -3153,7 +3152,6 @@ static int qemudDomainGetSecurityLabel(virDomainPtr dom, virSecurityLabelPtr sec
...
@@ -3153,7 +3152,6 @@ static int qemudDomainGetSecurityLabel(virDomainPtr dom, virSecurityLabelPtr sec
qemuDriverLock
(
driver
);
qemuDriverLock
(
driver
);
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
qemuDriverUnlock
(
driver
);
if
(
!
vm
)
{
if
(
!
vm
)
{
char
uuidstr
[
VIR_UUID_STRING_BUFLEN
];
char
uuidstr
[
VIR_UUID_STRING_BUFLEN
];
...
@@ -3199,6 +3197,7 @@ static int qemudDomainGetSecurityLabel(virDomainPtr dom, virSecurityLabelPtr sec
...
@@ -3199,6 +3197,7 @@ static int qemudDomainGetSecurityLabel(virDomainPtr dom, virSecurityLabelPtr sec
cleanup:
cleanup:
if
(
vm
)
if
(
vm
)
virDomainObjUnlock
(
vm
);
virDomainObjUnlock
(
vm
);
qemuDriverUnlock
(
driver
);
return
ret
;
return
ret
;
}
}
...
@@ -3473,7 +3472,6 @@ static int qemudDomainStart(virDomainPtr dom) {
...
@@ -3473,7 +3472,6 @@ static int qemudDomainStart(virDomainPtr dom) {
qemuDriverLock
(
driver
);
qemuDriverLock
(
driver
);
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
qemuDriverUnlock
(
driver
);
if
(
!
vm
)
{
if
(
!
vm
)
{
char
uuidstr
[
VIR_UUID_STRING_BUFLEN
];
char
uuidstr
[
VIR_UUID_STRING_BUFLEN
];
...
@@ -3492,11 +3490,9 @@ static int qemudDomainStart(virDomainPtr dom) {
...
@@ -3492,11 +3490,9 @@ static int qemudDomainStart(virDomainPtr dom) {
cleanup:
cleanup:
if
(
vm
)
if
(
vm
)
virDomainObjUnlock
(
vm
);
virDomainObjUnlock
(
vm
);
if
(
event
)
{
if
(
event
)
qemuDriverLock
(
driver
);
qemuDomainEventQueue
(
driver
,
event
);
qemuDomainEventQueue
(
driver
,
event
);
qemuDriverUnlock
(
driver
);
qemuDriverUnlock
(
driver
);
}
return
ret
;
return
ret
;
}
}
...
@@ -3984,7 +3980,6 @@ static int qemudDomainAttachDevice(virDomainPtr dom,
...
@@ -3984,7 +3980,6 @@ static int qemudDomainAttachDevice(virDomainPtr dom,
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
if
(
!
vm
)
{
if
(
!
vm
)
{
char
uuidstr
[
VIR_UUID_STRING_BUFLEN
];
char
uuidstr
[
VIR_UUID_STRING_BUFLEN
];
qemuDriverUnlock
(
driver
);
virUUIDFormat
(
dom
->
uuid
,
uuidstr
);
virUUIDFormat
(
dom
->
uuid
,
uuidstr
);
qemudReportError
(
dom
->
conn
,
dom
,
NULL
,
VIR_ERR_NO_DOMAIN
,
qemudReportError
(
dom
->
conn
,
dom
,
NULL
,
VIR_ERR_NO_DOMAIN
,
_
(
"no domain with matching uuid '%s'"
),
uuidstr
);
_
(
"no domain with matching uuid '%s'"
),
uuidstr
);
...
@@ -3992,7 +3987,6 @@ static int qemudDomainAttachDevice(virDomainPtr dom,
...
@@ -3992,7 +3987,6 @@ static int qemudDomainAttachDevice(virDomainPtr dom,
}
}
if
(
!
virDomainIsActive
(
vm
))
{
if
(
!
virDomainIsActive
(
vm
))
{
qemuDriverUnlock
(
driver
);
qemudReportError
(
dom
->
conn
,
dom
,
NULL
,
VIR_ERR_OPERATION_INVALID
,
qemudReportError
(
dom
->
conn
,
dom
,
NULL
,
VIR_ERR_OPERATION_INVALID
,
"%s"
,
_
(
"cannot attach device on inactive domain"
));
"%s"
,
_
(
"cannot attach device on inactive domain"
));
goto
cleanup
;
goto
cleanup
;
...
@@ -4000,7 +3994,6 @@ static int qemudDomainAttachDevice(virDomainPtr dom,
...
@@ -4000,7 +3994,6 @@ static int qemudDomainAttachDevice(virDomainPtr dom,
dev
=
virDomainDeviceDefParse
(
dom
->
conn
,
driver
->
caps
,
vm
->
def
,
xml
,
dev
=
virDomainDeviceDefParse
(
dom
->
conn
,
driver
->
caps
,
vm
->
def
,
xml
,
VIR_DOMAIN_XML_INACTIVE
);
VIR_DOMAIN_XML_INACTIVE
);
qemuDriverUnlock
(
driver
);
if
(
dev
==
NULL
)
if
(
dev
==
NULL
)
goto
cleanup
;
goto
cleanup
;
...
@@ -4053,6 +4046,7 @@ cleanup:
...
@@ -4053,6 +4046,7 @@ cleanup:
virDomainDeviceDefFree
(
dev
);
virDomainDeviceDefFree
(
dev
);
if
(
vm
)
if
(
vm
)
virDomainObjUnlock
(
vm
);
virDomainObjUnlock
(
vm
);
qemuDriverUnlock
(
driver
);
return
ret
;
return
ret
;
}
}
...
@@ -4136,7 +4130,6 @@ static int qemudDomainDetachDevice(virDomainPtr dom,
...
@@ -4136,7 +4130,6 @@ static int qemudDomainDetachDevice(virDomainPtr dom,
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
if
(
!
vm
)
{
if
(
!
vm
)
{
char
uuidstr
[
VIR_UUID_STRING_BUFLEN
];
char
uuidstr
[
VIR_UUID_STRING_BUFLEN
];
qemuDriverUnlock
(
driver
);
virUUIDFormat
(
dom
->
uuid
,
uuidstr
);
virUUIDFormat
(
dom
->
uuid
,
uuidstr
);
qemudReportError
(
dom
->
conn
,
dom
,
NULL
,
VIR_ERR_NO_DOMAIN
,
qemudReportError
(
dom
->
conn
,
dom
,
NULL
,
VIR_ERR_NO_DOMAIN
,
_
(
"no domain with matching uuid '%s'"
),
uuidstr
);
_
(
"no domain with matching uuid '%s'"
),
uuidstr
);
...
@@ -4144,7 +4137,6 @@ static int qemudDomainDetachDevice(virDomainPtr dom,
...
@@ -4144,7 +4137,6 @@ static int qemudDomainDetachDevice(virDomainPtr dom,
}
}
if
(
!
virDomainIsActive
(
vm
))
{
if
(
!
virDomainIsActive
(
vm
))
{
qemuDriverUnlock
(
driver
);
qemudReportError
(
dom
->
conn
,
dom
,
NULL
,
VIR_ERR_OPERATION_INVALID
,
qemudReportError
(
dom
->
conn
,
dom
,
NULL
,
VIR_ERR_OPERATION_INVALID
,
"%s"
,
_
(
"cannot detach device on inactive domain"
));
"%s"
,
_
(
"cannot detach device on inactive domain"
));
goto
cleanup
;
goto
cleanup
;
...
@@ -4152,7 +4144,6 @@ static int qemudDomainDetachDevice(virDomainPtr dom,
...
@@ -4152,7 +4144,6 @@ static int qemudDomainDetachDevice(virDomainPtr dom,
dev
=
virDomainDeviceDefParse
(
dom
->
conn
,
driver
->
caps
,
vm
->
def
,
xml
,
dev
=
virDomainDeviceDefParse
(
dom
->
conn
,
driver
->
caps
,
vm
->
def
,
xml
,
VIR_DOMAIN_XML_INACTIVE
);
VIR_DOMAIN_XML_INACTIVE
);
qemuDriverUnlock
(
driver
);
if
(
dev
==
NULL
)
if
(
dev
==
NULL
)
goto
cleanup
;
goto
cleanup
;
...
@@ -4176,6 +4167,7 @@ cleanup:
...
@@ -4176,6 +4167,7 @@ cleanup:
virDomainDeviceDefFree
(
dev
);
virDomainDeviceDefFree
(
dev
);
if
(
vm
)
if
(
vm
)
virDomainObjUnlock
(
vm
);
virDomainObjUnlock
(
vm
);
qemuDriverUnlock
(
driver
);
return
ret
;
return
ret
;
}
}
...
@@ -4215,7 +4207,6 @@ static int qemudDomainSetAutostart(virDomainPtr dom,
...
@@ -4215,7 +4207,6 @@ static int qemudDomainSetAutostart(virDomainPtr dom,
qemuDriverLock
(
driver
);
qemuDriverLock
(
driver
);
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
qemuDriverUnlock
(
driver
);
if
(
!
vm
)
{
if
(
!
vm
)
{
char
uuidstr
[
VIR_UUID_STRING_BUFLEN
];
char
uuidstr
[
VIR_UUID_STRING_BUFLEN
];
...
@@ -4273,6 +4264,7 @@ cleanup:
...
@@ -4273,6 +4264,7 @@ cleanup:
VIR_FREE
(
autostartLink
);
VIR_FREE
(
autostartLink
);
if
(
vm
)
if
(
vm
)
virDomainObjUnlock
(
vm
);
virDomainObjUnlock
(
vm
);
qemuDriverUnlock
(
driver
);
return
ret
;
return
ret
;
}
}
...
...
src/storage_driver.c
浏览文件 @
de658ab4
...
@@ -792,7 +792,6 @@ storagePoolRefresh(virStoragePoolPtr obj,
...
@@ -792,7 +792,6 @@ storagePoolRefresh(virStoragePoolPtr obj,
storageDriverLock
(
driver
);
storageDriverLock
(
driver
);
pool
=
virStoragePoolObjFindByUUID
(
&
driver
->
pools
,
obj
->
uuid
);
pool
=
virStoragePoolObjFindByUUID
(
&
driver
->
pools
,
obj
->
uuid
);
storageDriverUnlock
(
driver
);
if
(
!
pool
)
{
if
(
!
pool
)
{
virStorageReportError
(
obj
->
conn
,
VIR_ERR_INVALID_STORAGE_POOL
,
virStorageReportError
(
obj
->
conn
,
VIR_ERR_INVALID_STORAGE_POOL
,
...
@@ -834,6 +833,7 @@ storagePoolRefresh(virStoragePoolPtr obj,
...
@@ -834,6 +833,7 @@ storagePoolRefresh(virStoragePoolPtr obj,
cleanup:
cleanup:
if
(
pool
)
if
(
pool
)
virStoragePoolObjUnlock
(
pool
);
virStoragePoolObjUnlock
(
pool
);
storageDriverUnlock
(
driver
);
return
ret
;
return
ret
;
}
}
...
@@ -939,7 +939,6 @@ storagePoolSetAutostart(virStoragePoolPtr obj,
...
@@ -939,7 +939,6 @@ storagePoolSetAutostart(virStoragePoolPtr obj,
storageDriverLock
(
driver
);
storageDriverLock
(
driver
);
pool
=
virStoragePoolObjFindByUUID
(
&
driver
->
pools
,
obj
->
uuid
);
pool
=
virStoragePoolObjFindByUUID
(
&
driver
->
pools
,
obj
->
uuid
);
storageDriverUnlock
(
driver
);
if
(
!
pool
)
{
if
(
!
pool
)
{
virStorageReportError
(
obj
->
conn
,
VIR_ERR_INVALID_STORAGE_POOL
,
virStorageReportError
(
obj
->
conn
,
VIR_ERR_INVALID_STORAGE_POOL
,
...
@@ -988,6 +987,7 @@ storagePoolSetAutostart(virStoragePoolPtr obj,
...
@@ -988,6 +987,7 @@ storagePoolSetAutostart(virStoragePoolPtr obj,
cleanup:
cleanup:
if
(
pool
)
if
(
pool
)
virStoragePoolObjUnlock
(
pool
);
virStoragePoolObjUnlock
(
pool
);
storageDriverUnlock
(
driver
);
return
ret
;
return
ret
;
}
}
...
@@ -1274,7 +1274,10 @@ storageVolumeCreateXML(virStoragePoolPtr obj,
...
@@ -1274,7 +1274,10 @@ storageVolumeCreateXML(virStoragePoolPtr obj,
buildret
=
backend
->
buildVol
(
obj
->
conn
,
buildvoldef
);
buildret
=
backend
->
buildVol
(
obj
->
conn
,
buildvoldef
);
storageDriverLock
(
driver
);
virStoragePoolObjLock
(
pool
);
virStoragePoolObjLock
(
pool
);
storageDriverUnlock
(
driver
);
voldef
->
building
=
0
;
voldef
->
building
=
0
;
pool
->
asyncjobs
--
;
pool
->
asyncjobs
--
;
...
...
src/test.c
浏览文件 @
de658ab4
...
@@ -659,10 +659,12 @@ static virDrvOpenStatus testOpen(virConnectPtr conn,
...
@@ -659,10 +659,12 @@ static virDrvOpenStatus testOpen(virConnectPtr conn,
if
(
ret
==
VIR_DRV_OPEN_SUCCESS
)
{
if
(
ret
==
VIR_DRV_OPEN_SUCCESS
)
{
testConnPtr
privconn
=
conn
->
privateData
;
testConnPtr
privconn
=
conn
->
privateData
;
testDriverLock
(
privconn
);
/* Init callback list */
/* Init callback list */
if
(
VIR_ALLOC
(
privconn
->
domainEventCallbacks
)
<
0
||
if
(
VIR_ALLOC
(
privconn
->
domainEventCallbacks
)
<
0
||
!
(
privconn
->
domainEventQueue
=
virDomainEventQueueNew
()))
{
!
(
privconn
->
domainEventQueue
=
virDomainEventQueueNew
()))
{
virReportOOMError
(
NULL
);
virReportOOMError
(
NULL
);
testDriverUnlock
(
privconn
);
testClose
(
conn
);
testClose
(
conn
);
return
VIR_DRV_OPEN_ERROR
;
return
VIR_DRV_OPEN_ERROR
;
}
}
...
@@ -671,6 +673,7 @@ static virDrvOpenStatus testOpen(virConnectPtr conn,
...
@@ -671,6 +673,7 @@ static virDrvOpenStatus testOpen(virConnectPtr conn,
virEventAddTimeout
(
-
1
,
testDomainEventFlush
,
privconn
,
NULL
))
<
0
)
virEventAddTimeout
(
-
1
,
testDomainEventFlush
,
privconn
,
NULL
))
<
0
)
DEBUG0
(
"virEventAddTimeout failed: No addTimeoutImpl defined. "
DEBUG0
(
"virEventAddTimeout failed: No addTimeoutImpl defined. "
"continuing without events."
);
"continuing without events."
);
testDriverUnlock
(
privconn
);
}
}
return
(
ret
);
return
(
ret
);
...
...
src/uml_driver.c
浏览文件 @
de658ab4
...
@@ -1553,7 +1553,6 @@ static int umlDomainStart(virDomainPtr dom) {
...
@@ -1553,7 +1553,6 @@ static int umlDomainStart(virDomainPtr dom) {
umlDriverLock
(
driver
);
umlDriverLock
(
driver
);
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
umlDriverUnlock
(
driver
);
if
(
!
vm
)
{
if
(
!
vm
)
{
umlReportError
(
dom
->
conn
,
dom
,
NULL
,
VIR_ERR_INVALID_DOMAIN
,
umlReportError
(
dom
->
conn
,
dom
,
NULL
,
VIR_ERR_INVALID_DOMAIN
,
...
@@ -1672,6 +1671,7 @@ static int umlDomainGetAutostart(virDomainPtr dom,
...
@@ -1672,6 +1671,7 @@ static int umlDomainGetAutostart(virDomainPtr dom,
cleanup:
cleanup:
if
(
vm
)
if
(
vm
)
virDomainObjUnlock
(
vm
);
virDomainObjUnlock
(
vm
);
umlDriverUnlock
(
driver
);
return
ret
;
return
ret
;
}
}
...
@@ -1684,7 +1684,6 @@ static int umlDomainSetAutostart(virDomainPtr dom,
...
@@ -1684,7 +1684,6 @@ static int umlDomainSetAutostart(virDomainPtr dom,
umlDriverLock
(
driver
);
umlDriverLock
(
driver
);
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
umlDriverUnlock
(
driver
);
if
(
!
vm
)
{
if
(
!
vm
)
{
umlReportError
(
dom
->
conn
,
dom
,
NULL
,
VIR_ERR_INVALID_DOMAIN
,
umlReportError
(
dom
->
conn
,
dom
,
NULL
,
VIR_ERR_INVALID_DOMAIN
,
...
@@ -1740,6 +1739,7 @@ cleanup:
...
@@ -1740,6 +1739,7 @@ cleanup:
VIR_FREE
(
autostartLink
);
VIR_FREE
(
autostartLink
);
if
(
vm
)
if
(
vm
)
virDomainObjUnlock
(
vm
);
virDomainObjUnlock
(
vm
);
umlDriverUnlock
(
driver
);
return
ret
;
return
ret
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录