提交 4f107590 编写于 作者: C Cole Robinson

Refresh QEMU driver capabilities for each getCapabilities call.

Also fix up a couple issues where caps are accessed without locking
the driver structure.
上级 5432ec8d
Wed May 6 10:19:36 EDT 2009 Cole Robinson <crobinso@redhat.com>
* src/qemu_driver.c : Refresh QEMU driver capabilities for each
getCapabilities call.
Wed May 6 15:42:08 CEST 2009 Daniel Veillard <veillard@redhat.com>
* src/vbox/vbox_driver.c src/vbox/vbox_tmpl.c: changes in
......
......@@ -1872,10 +1872,12 @@ static int qemudGetNodeInfo(virConnectPtr conn,
static char *qemudGetCapabilities(virConnectPtr conn) {
struct qemud_driver *driver = conn->privateData;
char *xml;
char *xml = NULL;
qemuDriverLock(driver);
if ((xml = virCapabilitiesFormatXML(driver->caps)) == NULL)
virCapabilitiesFree(qemu_driver->caps);
if ((qemu_driver->caps = qemudCapsInit()) == NULL ||
(xml = virCapabilitiesFormatXML(driver->caps)) == NULL)
virReportOOMError(conn);
qemuDriverUnlock(driver);
......@@ -3156,20 +3158,26 @@ cleanup:
return ret;
}
static int qemudNodeGetSecurityModel(virConnectPtr conn, virSecurityModelPtr secmodel)
static int qemudNodeGetSecurityModel(virConnectPtr conn,
virSecurityModelPtr secmodel)
{
struct qemud_driver *driver = (struct qemud_driver *)conn->privateData;
char *p;
int ret = 0;
if (!driver->securityDriver)
return -2;
qemuDriverLock(driver);
if (!driver->securityDriver) {
ret = -2;
goto cleanup;
}
p = driver->caps->host.secModel.model;
if (strlen(p) >= VIR_SECURITY_MODEL_BUFLEN-1) {
qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
_("security model string exceeds max %d bytes"),
VIR_SECURITY_MODEL_BUFLEN-1);
return -1;
ret = -1;
goto cleanup;
}
strcpy(secmodel->model, p);
......@@ -3178,10 +3186,14 @@ static int qemudNodeGetSecurityModel(virConnectPtr conn, virSecurityModelPtr sec
qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
_("security DOI string exceeds max %d bytes"),
VIR_SECURITY_DOI_BUFLEN-1);
return -1;
ret = -1;
goto cleanup;
}
strcpy(secmodel->doi, p);
return 0;
cleanup:
qemuDriverUnlock(driver);
return ret;
}
/* TODO: check seclabel restore */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册