mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-01 17:35:17 +00:00
Don't process inactive domains in regular Xen driver backends
This commit is contained in:
parent
77bcf6b598
commit
18035eddd3
14
ChangeLog
14
ChangeLog
@ -1,16 +1,24 @@
|
||||
Wed Nov 15 15:59:13 EST 2006 Daniel Berrange <berrange@redhat.com>
|
||||
Wed Nov 15 15:08:13 EST 2006 Daniel Berrange <berrange@redhat.com>
|
||||
|
||||
* src/xen_internal.c, src/xs_internal.c, src/xend_internal.c,
|
||||
src/proxy.c: Don't try to invoke APIs if domain is is < 0, letting
|
||||
these inactive domains be handled by other driver backend.
|
||||
* src/xend_internal.h: make xend_config_version() api available
|
||||
to other drivers
|
||||
|
||||
Wed Nov 15 14:59:13 EST 2006 Daniel Berrange <berrange@redhat.com>
|
||||
|
||||
* src/hash.c, src/hash.h: Added three new methods for iterating
|
||||
over hashtable entries, virHashForEach, virHashRemoveSet &
|
||||
virHashSearch.
|
||||
|
||||
Wed Nov 15 15:52:01 EST 2006 Daniel Berrange <berrange@redhat.com>
|
||||
Wed Nov 15 14:52:01 EST 2006 Daniel Berrange <berrange@redhat.com>
|
||||
|
||||
* src/conf.c, src/conf.h: Add two new APIs virConfNew() and
|
||||
virConfSetValue() for creating & populating new config objects
|
||||
in memory instead of from a file
|
||||
|
||||
Wed Nov 15 15:42:01 EST 2006 Daniel Berrange <berrange@redhat.com>
|
||||
Wed Nov 15 14:42:01 EST 2006 Daniel Berrange <berrange@redhat.com>
|
||||
|
||||
* python/libvir.c, python/libvirt_wrap.h, python/types.h: Ensure
|
||||
that unsigned longs are marshalled to python Long type instead
|
||||
|
@ -663,7 +663,7 @@ xenProxyDomainGetDomMaxMemory(virConnectPtr conn, int id)
|
||||
|
||||
if (!VIR_IS_CONNECT(conn)) {
|
||||
virProxyError(conn, VIR_ERR_INVALID_CONN, __FUNCTION__);
|
||||
return (-1);
|
||||
return (0);
|
||||
}
|
||||
memset(&req, 0, sizeof(req));
|
||||
req.command = VIR_PROXY_MAX_MEMORY;
|
||||
@ -672,7 +672,7 @@ xenProxyDomainGetDomMaxMemory(virConnectPtr conn, int id)
|
||||
ret = xenProxyCommand(conn, &req, NULL, 0);
|
||||
if (ret < 0) {
|
||||
xenProxyClose(conn);
|
||||
return(-1);
|
||||
return(0);
|
||||
}
|
||||
return(req.data.larg);
|
||||
}
|
||||
@ -695,6 +695,8 @@ xenProxyDomainGetMaxMemory(virDomainPtr domain)
|
||||
virProxyError(domain->conn, VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
|
||||
return (0);
|
||||
}
|
||||
if (domain->handle < 0)
|
||||
return (0);
|
||||
return(xenProxyDomainGetDomMaxMemory(domain->conn, domain->handle));
|
||||
}
|
||||
|
||||
@ -716,15 +718,17 @@ xenProxyDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)
|
||||
int ret;
|
||||
|
||||
if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
|
||||
if (domain == NULL)
|
||||
virProxyError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
|
||||
else
|
||||
virProxyError(domain->conn, VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
|
||||
return (0);
|
||||
if (domain == NULL)
|
||||
virProxyError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
|
||||
else
|
||||
virProxyError(domain->conn, VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
|
||||
return (-1);
|
||||
}
|
||||
if (domain->handle < 0)
|
||||
return (-1);
|
||||
if (info == NULL) {
|
||||
virProxyError(domain->conn, VIR_ERR_INVALID_ARG, __FUNCTION__);
|
||||
return (-1);
|
||||
return (-1);
|
||||
}
|
||||
memset(&req, 0, sizeof(req));
|
||||
req.command = VIR_PROXY_DOMAIN_INFO;
|
||||
@ -733,11 +737,11 @@ xenProxyDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)
|
||||
ret = xenProxyCommand(domain->conn, &req, &ans, 0);
|
||||
if (ret < 0) {
|
||||
xenProxyClose(domain->conn);
|
||||
return(-1);
|
||||
return(-1);
|
||||
}
|
||||
if (ans.len != sizeof(virProxyPacket) + sizeof(virDomainInfo)) {
|
||||
virProxyError(domain->conn, VIR_ERR_OPERATION_FAILED, __FUNCTION__);
|
||||
return (-1);
|
||||
return (-1);
|
||||
}
|
||||
memmove(info, &ans.extra.dinfo, sizeof(virDomainInfo));
|
||||
|
||||
@ -960,6 +964,8 @@ xenProxyDomainDumpXML(virDomainPtr domain, int flags ATTRIBUTE_UNUSED)
|
||||
virProxyError(domain->conn, VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
|
||||
return (NULL);
|
||||
}
|
||||
if (domain->handle < 0)
|
||||
return (NULL);
|
||||
memset(&req, 0, sizeof(req));
|
||||
req.command = VIR_PROXY_DOMAIN_XML;
|
||||
req.data.arg = domain->handle;
|
||||
|
@ -1498,7 +1498,7 @@ static unsigned long
|
||||
xenHypervisorGetMaxMemory(virDomainPtr domain)
|
||||
{
|
||||
if ((domain == NULL) || (domain->conn == NULL) ||
|
||||
(domain->conn->handle < 0))
|
||||
(domain->conn->handle < 0) || (domain->handle < 0))
|
||||
return (0);
|
||||
|
||||
return(xenHypervisorGetDomMaxMemory(domain->conn, domain->handle));
|
||||
@ -1597,6 +1597,7 @@ xenHypervisorGetDomainInfo(virDomainPtr domain, virDomainInfoPtr info)
|
||||
(domain->conn->handle < 0) || (info == NULL) ||
|
||||
(domain->handle < 0))
|
||||
return (-1);
|
||||
|
||||
return(xenHypervisorGetDomInfo(domain->conn, domain->handle, info));
|
||||
|
||||
}
|
||||
@ -1616,7 +1617,7 @@ xenHypervisorPauseDomain(virDomainPtr domain)
|
||||
int ret;
|
||||
|
||||
if ((domain == NULL) || (domain->conn == NULL) ||
|
||||
(domain->conn->handle < 0))
|
||||
(domain->conn->handle < 0) || (domain->handle < 0))
|
||||
return (-1);
|
||||
|
||||
ret = virXen_pausedomain(domain->conn->handle, domain->handle);
|
||||
@ -1639,7 +1640,7 @@ xenHypervisorResumeDomain(virDomainPtr domain)
|
||||
int ret;
|
||||
|
||||
if ((domain == NULL) || (domain->conn == NULL) ||
|
||||
(domain->conn->handle < 0))
|
||||
(domain->conn->handle < 0) || (domain->handle < 0))
|
||||
return (-1);
|
||||
|
||||
ret = virXen_unpausedomain(domain->conn->handle, domain->handle);
|
||||
@ -1662,7 +1663,7 @@ xenHypervisorDestroyDomain(virDomainPtr domain)
|
||||
int ret;
|
||||
|
||||
if ((domain == NULL) || (domain->conn == NULL) ||
|
||||
(domain->conn->handle < 0))
|
||||
(domain->conn->handle < 0) || (domain->handle < 0))
|
||||
return (-1);
|
||||
|
||||
ret = virXen_destroydomain(domain->conn->handle, domain->handle);
|
||||
@ -1686,7 +1687,7 @@ xenHypervisorSetMaxMemory(virDomainPtr domain, unsigned long memory)
|
||||
int ret;
|
||||
|
||||
if ((domain == NULL) || (domain->conn == NULL) ||
|
||||
(domain->conn->handle < 0))
|
||||
(domain->conn->handle < 0) || (domain->handle < 0))
|
||||
return (-1);
|
||||
|
||||
ret = virXen_setmaxmem(domain->conn->handle, domain->handle, memory);
|
||||
@ -1713,7 +1714,8 @@ xenHypervisorSetVcpus(virDomainPtr domain, unsigned int nvcpus)
|
||||
int ret;
|
||||
|
||||
if ((domain == NULL) || (domain->conn == NULL) ||
|
||||
(domain->conn->handle < 0) || (nvcpus < 1))
|
||||
(domain->conn->handle < 0) || (domain->handle < 0) ||
|
||||
(nvcpus < 1))
|
||||
return (-1);
|
||||
|
||||
ret = virXen_setmaxvcpus(domain->conn->handle, domain->handle, nvcpus);
|
||||
@ -1741,7 +1743,8 @@ xenHypervisorPinVcpu(virDomainPtr domain, unsigned int vcpu,
|
||||
int ret;
|
||||
|
||||
if ((domain == NULL) || (domain->conn == NULL) ||
|
||||
(domain->conn->handle < 0) || (cpumap == NULL) || (maplen < 1))
|
||||
(domain->conn->handle < 0) || (domain->handle < 0) ||
|
||||
(cpumap == NULL) || (maplen < 1))
|
||||
return (-1);
|
||||
|
||||
ret = virXen_setvcpumap(domain->conn->handle, domain->handle, vcpu,
|
||||
@ -1782,9 +1785,10 @@ xenHypervisorGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int maxinfo,
|
||||
virVcpuInfoPtr ipt;
|
||||
int nbinfo, i;
|
||||
|
||||
if ((domain == NULL) || (domain->conn == NULL) || (domain->conn->handle < 0)
|
||||
|| (info == NULL) || (maxinfo < 1)
|
||||
|| (sizeof(cpumap_t) & 7))
|
||||
if ((domain == NULL) || (domain->conn == NULL) ||
|
||||
(domain->conn->handle < 0) || (domain->handle < 0) ||
|
||||
(info == NULL) || (maxinfo < 1) ||
|
||||
(sizeof(cpumap_t) & 7))
|
||||
return (-1);
|
||||
if ((cpumaps != NULL) && (maplen < 1))
|
||||
return -1;
|
||||
|
@ -1266,7 +1266,7 @@ xend_get_node(virConnectPtr xend)
|
||||
return node;
|
||||
}
|
||||
|
||||
static int
|
||||
int
|
||||
xend_get_config_version(virConnectPtr conn) {
|
||||
struct sexpr *root;
|
||||
const char *value;
|
||||
@ -2075,6 +2075,8 @@ xenDaemonDomainSuspend(virDomainPtr domain)
|
||||
__FUNCTION__);
|
||||
return(-1);
|
||||
}
|
||||
if (domain->handle < 0)
|
||||
return(-1);
|
||||
return xend_op(domain->conn, domain->name, "op", "pause", NULL);
|
||||
}
|
||||
|
||||
@ -2095,6 +2097,8 @@ xenDaemonDomainResume(virDomainPtr domain)
|
||||
__FUNCTION__);
|
||||
return(-1);
|
||||
}
|
||||
if (domain->handle < 0)
|
||||
return(-1);
|
||||
return xend_op(domain->conn, domain->name, "op", "unpause", NULL);
|
||||
}
|
||||
|
||||
@ -2116,6 +2120,8 @@ xenDaemonDomainShutdown(virDomainPtr domain)
|
||||
__FUNCTION__);
|
||||
return(-1);
|
||||
}
|
||||
if (domain->handle < 0)
|
||||
return(-1);
|
||||
return xend_op(domain->conn, domain->name, "op", "shutdown", "reason", "halt", NULL);
|
||||
}
|
||||
|
||||
@ -2138,6 +2144,8 @@ xenDaemonDomainReboot(virDomainPtr domain, unsigned int flags ATTRIBUTE_UNUSED)
|
||||
__FUNCTION__);
|
||||
return(-1);
|
||||
}
|
||||
if (domain->handle < 0)
|
||||
return(-1);
|
||||
return xend_op(domain->conn, domain->name, "op", "shutdown", "reason", "reboot", NULL);
|
||||
}
|
||||
|
||||
@ -2162,6 +2170,8 @@ xenDaemonDomainDestroy(virDomainPtr domain)
|
||||
__FUNCTION__);
|
||||
return(-1);
|
||||
}
|
||||
if (domain->handle < 0)
|
||||
return(-1);
|
||||
return xend_op(domain->conn, domain->name, "op", "destroy", NULL);
|
||||
}
|
||||
|
||||
@ -2187,6 +2197,8 @@ xenDaemonDomainSave(virDomainPtr domain, const char *filename)
|
||||
__FUNCTION__);
|
||||
return(-1);
|
||||
}
|
||||
if (domain->handle < 0)
|
||||
return(-1);
|
||||
return xend_op(domain->conn, domain->name, "op", "save", "file", filename, NULL);
|
||||
}
|
||||
|
||||
@ -2232,6 +2244,8 @@ xenDaemonDomainGetMaxMemory(virDomainPtr domain)
|
||||
__FUNCTION__);
|
||||
return(-1);
|
||||
}
|
||||
if (domain->handle < 0)
|
||||
return(-1);
|
||||
|
||||
/* can we ask for a subset ? worth it ? */
|
||||
root = sexpr_get(domain->conn, "/xend/domain/%s?detail=1", domain->name);
|
||||
@ -2266,6 +2280,9 @@ xenDaemonDomainSetMaxMemory(virDomainPtr domain, unsigned long memory)
|
||||
__FUNCTION__);
|
||||
return(-1);
|
||||
}
|
||||
if (domain->handle < 0)
|
||||
return(-1);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%lu", memory >> 10);
|
||||
return xend_op(domain->conn, domain->name, "op", "maxmem_set", "memory",
|
||||
buf, NULL);
|
||||
@ -2297,6 +2314,9 @@ xenDaemonDomainSetMemory(virDomainPtr domain, unsigned long memory)
|
||||
__FUNCTION__);
|
||||
return(-1);
|
||||
}
|
||||
if (domain->handle < 0)
|
||||
return(-1);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%lu", memory >> 10);
|
||||
return xend_op(domain->conn, domain->name, "op", "mem_target_set",
|
||||
"target", buf, NULL);
|
||||
@ -2345,6 +2365,8 @@ xenDaemonDomainDumpXML(virDomainPtr domain, int flags ATTRIBUTE_UNUSED)
|
||||
__FUNCTION__);
|
||||
return(NULL);
|
||||
}
|
||||
if (domain->handle < 0)
|
||||
return(NULL);
|
||||
|
||||
return xenDaemonDomainDumpXMLByID(domain->conn, domain->handle);
|
||||
}
|
||||
@ -2372,7 +2394,8 @@ xenDaemonDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)
|
||||
__FUNCTION__);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
if (domain->handle < 0)
|
||||
return(-1);
|
||||
|
||||
root = sexpr_get(domain->conn, "/xend/domain/%s?detail=1", domain->name);
|
||||
if (root == NULL)
|
||||
@ -2652,6 +2675,9 @@ xenDaemonDomainSetVcpus(virDomainPtr domain, unsigned int vcpus)
|
||||
__FUNCTION__);
|
||||
return (-1);
|
||||
}
|
||||
if (domain->handle < 0)
|
||||
return(-1);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%d", vcpus);
|
||||
return(xend_op(domain->conn, domain->name, "op", "set_vcpus", "vcpus",
|
||||
buf, NULL));
|
||||
@ -2681,6 +2707,8 @@ xenDaemonDomainPinVcpu(virDomainPtr domain, unsigned int vcpu,
|
||||
__FUNCTION__);
|
||||
return (-1);
|
||||
}
|
||||
if (domain->handle < 0)
|
||||
return(-1);
|
||||
|
||||
/* from bit map, build character string of mapped CPU numbers */
|
||||
for (i = 0; i < maplen; i++) for (j = 0; j < 8; j++)
|
||||
@ -2734,6 +2762,9 @@ xenDaemonDomainGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int maxinfo,
|
||||
__FUNCTION__);
|
||||
return (-1);
|
||||
}
|
||||
if (domain->handle < 0)
|
||||
return(-1);
|
||||
|
||||
root = sexpr_get(domain->conn, "/xend/domain/%s?op=vcpuinfo", domain->name);
|
||||
if (root == NULL)
|
||||
return (-1);
|
||||
|
@ -613,6 +613,7 @@ char *xenDaemonDomainDumpXMLByID(virConnectPtr xend,
|
||||
*/
|
||||
int xend_log(virConnectPtr xend, char *buffer, size_t n_buffer);
|
||||
|
||||
int xend_get_config_version(virConnectPtr conn);
|
||||
char *xend_parse_domain_sexp(virConnectPtr conn, char *root, int xendConfigVersion);
|
||||
|
||||
/* refactored ones */
|
||||
|
@ -372,6 +372,8 @@ xenStoreGetDomainInfo(virDomainPtr domain, virDomainInfoPtr info)
|
||||
}
|
||||
if (domain->conn->xshandle == NULL)
|
||||
return(-1);
|
||||
if (domain->handle == -1)
|
||||
return(-1);
|
||||
|
||||
tmp = virDomainDoStoreQuery(domain->conn, domain->handle, "running");
|
||||
if (tmp != NULL) {
|
||||
@ -430,6 +432,8 @@ xenStoreDomainSetMemory(virDomainPtr domain, unsigned long memory)
|
||||
__FUNCTION__);
|
||||
return(-1);
|
||||
}
|
||||
if (domain->handle == -1)
|
||||
return(-1);
|
||||
snprintf(value, 19, "%lu", memory);
|
||||
value[19] = 0;
|
||||
ret = virDomainDoStoreWrite(domain, "memory/target", &value[0]);
|
||||
@ -454,6 +458,8 @@ xenStoreDomainGetMaxMemory(virDomainPtr domain)
|
||||
|
||||
if (!VIR_IS_CONNECTED_DOMAIN(domain))
|
||||
return (ret);
|
||||
if (domain->handle == -1)
|
||||
return(-1);
|
||||
|
||||
tmp = virDomainDoStoreQuery(domain->conn, domain->handle, "memory/target");
|
||||
if (tmp != NULL) {
|
||||
@ -626,6 +632,8 @@ xenStoreDomainShutdown(virDomainPtr domain)
|
||||
__FUNCTION__);
|
||||
return(-1);
|
||||
}
|
||||
if (domain->handle == -1)
|
||||
return(-1);
|
||||
/*
|
||||
* this is very hackish, the domU kernel probes for a special
|
||||
* node in the xenstore and launch the shutdown command if found.
|
||||
@ -652,6 +660,8 @@ xenStoreDomainReboot(virDomainPtr domain, unsigned int flags ATTRIBUTE_UNUSED)
|
||||
__FUNCTION__);
|
||||
return(-1);
|
||||
}
|
||||
if (domain->handle == -1)
|
||||
return(-1);
|
||||
/*
|
||||
* this is very hackish, the domU kernel probes for a special
|
||||
* node in the xenstore and launch the shutdown command if found.
|
||||
|
Loading…
x
Reference in New Issue
Block a user