/*
* xm_internal.h: helper routines for dealing with inactive domains
*
- * Copyright (C) 2006-2007, 2009-2012 Red Hat, Inc.
+ * Copyright (C) 2006-2007, 2009-2013 Red Hat, Inc.
* Copyright (C) 2006 Daniel P. Berrange
*
* This library is free software; you can redistribute it and/or
#else
static int xenInotifyActive(virConnectPtr conn)
{
- xenUnifiedPrivatePtr priv = (xenUnifiedPrivatePtr) conn->privateData;
+ xenUnifiedPrivatePtr priv = conn->privateData;
return priv->inotifyWatch > 0;
}
#endif
};
/* Remove any configs which were not refreshed recently */
-static int xenXMConfigReaper(const void *payload, const void *key ATTRIBUTE_UNUSED, const void *data) {
+static int
+xenXMConfigReaper(const void *payload,
+ const void *key ATTRIBUTE_UNUSED,
+ const void *data)
+{
const struct xenXMConfigReaperData *args = data;
xenXMConfCachePtr entry = (xenXMConfCachePtr)payload;
static virDomainDefPtr
-xenXMConfigReadFile(virConnectPtr conn, const char *filename) {
+xenXMConfigReadFile(virConnectPtr conn, const char *filename)
+{
virConfPtr conf;
virDomainDefPtr def;
xenUnifiedPrivatePtr priv = conn->privateData;
}
static int
-xenXMConfigSaveFile(virConnectPtr conn, const char *filename, virDomainDefPtr def) {
+xenXMConfigSaveFile(virConnectPtr conn,
+ const char *filename,
+ virDomainDefPtr def)
+{
virConfPtr conf;
xenUnifiedPrivatePtr priv = conn->privateData;
int ret;
* calling this function
*/
int
-xenXMConfigCacheRemoveFile(virConnectPtr conn,
- const char *filename)
+xenXMConfigCacheRemoveFile(virConnectPtr conn, const char *filename)
{
xenUnifiedPrivatePtr priv = conn->privateData;
xenXMConfCachePtr entry;
* Caller must hold the lock on 'conn->privateData' before
* calling this function
*/
-int xenXMConfigCacheRefresh(virConnectPtr conn) {
+int
+xenXMConfigCacheRefresh(virConnectPtr conn)
+{
xenUnifiedPrivatePtr priv = conn->privateData;
DIR *dh;
struct dirent *ent;
* Free the cached config files associated with this
* connection
*/
-int xenXMClose(virConnectPtr conn) {
+int
+xenXMClose(virConnectPtr conn)
+{
xenUnifiedPrivatePtr priv = conn->privateData;
virHashFree(priv->nameConfigMap);
*/
int
xenXMDomainGetState(virDomainPtr domain,
- int *state,
- int *reason,
+ int *state, int *reason,
unsigned int flags)
{
virCheckFlags(0, -1);
* Since these are all offline domains, we only return info about
* VCPUs and memory.
*/
-int xenXMDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info) {
- xenUnifiedPrivatePtr priv;
+int
+xenXMDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)
+{
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
const char *filename;
xenXMConfCachePtr entry;
- if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL)) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
if (domain->id != -1)
return -1;
- priv = domain->conn->privateData;
xenUnifiedLock(priv);
if (!(filename = virHashLookup(priv->nameConfigMap, domain->name)))
* Turn a config record into a lump of XML describing the
* domain, suitable for later feeding for virDomainCreateXML
*/
-char *xenXMDomainGetXMLDesc(virDomainPtr domain, unsigned int flags)
+char *
+xenXMDomainGetXMLDesc(virDomainPtr domain, unsigned int flags)
{
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
const char *filename;
xenXMConfCachePtr entry;
char *ret = NULL;
/* Flags checked by virDomainDefFormat */
- if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL)) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return NULL;
- }
if (domain->id != -1)
return NULL;
- priv = domain->conn->privateData;
xenUnifiedLock(priv);
if (!(filename = virHashLookup(priv->nameConfigMap, domain->name)))
/*
* Update amount of memory in the config file
*/
-int xenXMDomainSetMemory(virDomainPtr domain, unsigned long memory) {
- xenUnifiedPrivatePtr priv;
+int
+xenXMDomainSetMemory(virDomainPtr domain, unsigned long memory)
+{
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
const char *filename;
xenXMConfCachePtr entry;
int ret = -1;
- if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL)) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
- if (domain->conn->flags & VIR_CONNECT_RO)
- return -1;
- if (domain->id != -1)
- return -1;
- if (memory < 1024 * MIN_XEN_GUEST_SIZE)
+ if (domain->conn->flags & VIR_CONNECT_RO || domain->id != -1 ||
+ memory < 1024 * MIN_XEN_GUEST_SIZE)
return -1;
- priv = domain->conn->privateData;
xenUnifiedLock(priv);
if (!(filename = virHashLookup(priv->nameConfigMap, domain->name)))
/*
* Update maximum memory limit in config
*/
-int xenXMDomainSetMaxMemory(virDomainPtr domain, unsigned long memory) {
- xenUnifiedPrivatePtr priv;
+int
+xenXMDomainSetMaxMemory(virDomainPtr domain, unsigned long memory)
+{
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
const char *filename;
xenXMConfCachePtr entry;
int ret = -1;
- if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL)) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
- if (domain->conn->flags & VIR_CONNECT_RO)
- return -1;
- if (domain->id != -1)
+ if (domain->conn->flags & VIR_CONNECT_RO || domain->id != -1)
return -1;
- priv = domain->conn->privateData;
xenUnifiedLock(priv);
if (!(filename = virHashLookup(priv->nameConfigMap, domain->name)))
/*
* Get max memory limit from config
*/
-unsigned long long xenXMDomainGetMaxMemory(virDomainPtr domain) {
- xenUnifiedPrivatePtr priv;
+unsigned long long
+xenXMDomainGetMaxMemory(virDomainPtr domain)
+{
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
const char *filename;
xenXMConfCachePtr entry;
unsigned long long ret = 0;
- if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL)) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return 0;
- }
if (domain->id != -1)
return 0;
- priv = domain->conn->privateData;
xenUnifiedLock(priv);
if (!(filename = virHashLookup(priv->nameConfigMap, domain->name)))
* the unified driver should keep trying.
*/
int
-xenXMDomainSetVcpusFlags(virDomainPtr domain, unsigned int vcpus,
+xenXMDomainSetVcpusFlags(virDomainPtr domain,
+ unsigned int vcpus,
unsigned int flags)
{
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
const char *filename;
xenXMConfCachePtr entry;
int ret = -1;
VIR_DOMAIN_VCPU_CONFIG |
VIR_DOMAIN_VCPU_MAXIMUM, -1);
- if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL)) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
if (domain->conn->flags & VIR_CONNECT_RO) {
virReportError(VIR_ERR_OPERATION_DENIED, __FUNCTION__);
return -1;
return -1;
}
- priv = domain->conn->privateData;
xenUnifiedLock(priv);
if (!(filename = virHashLookup(priv->nameConfigMap, domain->name)))
int
xenXMDomainGetVcpusFlags(virDomainPtr domain, unsigned int flags)
{
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
const char *filename;
xenXMConfCachePtr entry;
int ret = -2;
VIR_DOMAIN_VCPU_CONFIG |
VIR_DOMAIN_VCPU_MAXIMUM, -1);
- if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL)) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
-
if (domain->id != -1)
return -2;
if (flags & VIR_DOMAIN_VCPU_LIVE) {
return -1;
}
- priv = domain->conn->privateData;
xenUnifiedLock(priv);
if (!(filename = virHashLookup(priv->nameConfigMap, domain->name)))
*
* Returns 0 for success; -1 (with errno) on error
*/
-int xenXMDomainPinVcpu(virDomainPtr domain,
- unsigned int vcpu ATTRIBUTE_UNUSED,
- unsigned char *cpumap, int maplen)
+int
+xenXMDomainPinVcpu(virDomainPtr domain,
+ unsigned int vcpu ATTRIBUTE_UNUSED,
+ unsigned char *cpumap,
+ int maplen)
{
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
const char *filename;
xenXMConfCachePtr entry;
int ret = -1;
- if (domain == NULL || domain->conn == NULL || domain->name == NULL
- || cpumap == NULL || maplen < 1 || maplen > (int)sizeof(cpumap_t)) {
+ if (maplen > (int)sizeof(cpumap_t)) {
virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
return -1;
}
return -1;
}
- priv = domain->conn->privateData;
xenUnifiedLock(priv);
if (!(filename = virHashLookup(priv->nameConfigMap, domain->name))) {
/*
* Find an inactive domain based on its name
*/
-virDomainPtr xenXMDomainLookupByName(virConnectPtr conn, const char *domname) {
- xenUnifiedPrivatePtr priv;
+virDomainPtr
+xenXMDomainLookupByName(virConnectPtr conn, const char *domname)
+{
+ xenUnifiedPrivatePtr priv = conn->privateData;
const char *filename;
xenXMConfCachePtr entry;
virDomainPtr ret = NULL;
- if (!VIR_IS_CONNECT(conn)) {
- virReportError(VIR_ERR_INVALID_CONN, __FUNCTION__);
- return NULL;
- }
- if (domname == NULL) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return NULL;
- }
-
- priv = conn->privateData;
xenUnifiedLock(priv);
if (!xenInotifyActive(conn) && xenXMConfigCacheRefresh(conn) < 0)
/*
* Hash table iterator to search for a domain based on UUID
*/
-static int xenXMDomainSearchForUUID(const void *payload, const void *name ATTRIBUTE_UNUSED, const void *data) {
+static int
+xenXMDomainSearchForUUID(const void *payload,
+ const void *name ATTRIBUTE_UNUSED,
+ const void *data)
+{
const unsigned char *wantuuid = (const unsigned char *)data;
const xenXMConfCachePtr entry = (const xenXMConfCachePtr)payload;
/*
* Find an inactive domain based on its UUID
*/
-virDomainPtr xenXMDomainLookupByUUID(virConnectPtr conn,
- const unsigned char *uuid) {
- xenUnifiedPrivatePtr priv;
+virDomainPtr
+xenXMDomainLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
+{
+ xenUnifiedPrivatePtr priv = conn->privateData;
xenXMConfCachePtr entry;
virDomainPtr ret = NULL;
- if (!VIR_IS_CONNECT(conn)) {
- virReportError(VIR_ERR_INVALID_CONN, __FUNCTION__);
- return NULL;
- }
- if (uuid == NULL) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return NULL;
- }
-
- priv = conn->privateData;
xenUnifiedLock(priv);
if (!xenInotifyActive(conn) && xenXMConfigCacheRefresh(conn) < 0)
/*
* Start a domain from an existing defined config file
*/
-int xenXMDomainCreate(virDomainPtr domain) {
+int
+xenXMDomainCreate(virDomainPtr domain)
+{
char *sexpr;
int ret = -1;
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv= domain->conn->privateData;
const char *filename;
xenXMConfCachePtr entry;
- priv = (xenUnifiedPrivatePtr) domain->conn->privateData;
-
if (domain->id != -1)
return -1;
* Create a config file for a domain, based on an XML
* document describing its config
*/
-virDomainPtr xenXMDomainDefineXML(virConnectPtr conn, const char *xml)
+virDomainPtr
+xenXMDomainDefineXML(virConnectPtr conn, const char *xml)
{
virDomainPtr ret;
char *filename = NULL;
virDomainDefPtr def = NULL;
virConfPtr conf = NULL;
xenXMConfCachePtr entry = NULL;
- xenUnifiedPrivatePtr priv = (xenUnifiedPrivatePtr) conn->privateData;
+ xenUnifiedPrivatePtr priv = conn->privateData;
- if (!VIR_IS_CONNECT(conn)) {
- virReportError(VIR_ERR_INVALID_CONN, __FUNCTION__);
- return NULL;
- }
- if (xml == NULL) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return NULL;
- }
if (conn->flags & VIR_CONNECT_RO)
return NULL;
/*
* Delete a domain from disk
*/
-int xenXMDomainUndefine(virDomainPtr domain) {
- xenUnifiedPrivatePtr priv;
+int
+xenXMDomainUndefine(virDomainPtr domain)
+{
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
const char *filename;
xenXMConfCachePtr entry;
int ret = -1;
- if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL)) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
-
if (domain->id != -1)
return -1;
if (domain->conn->flags & VIR_CONNECT_RO)
return -1;
- priv = domain->conn->privateData;
xenUnifiedLock(priv);
if (!(filename = virHashLookup(priv->nameConfigMap, domain->name)))
char ** names;
};
-static void xenXMListIterator(void *payload ATTRIBUTE_UNUSED, const void *name, void *data) {
+static void
+xenXMListIterator(void *payload ATTRIBUTE_UNUSED, const void *name, void *data) {
struct xenXMListIteratorContext *ctx = data;
virDomainPtr dom = NULL;
* List all defined domains, filtered to remove any which
* are currently running
*/
-int xenXMListDefinedDomains(virConnectPtr conn, char **const names, int maxnames) {
- xenUnifiedPrivatePtr priv;
+int
+xenXMListDefinedDomains(virConnectPtr conn, char **const names, int maxnames)
+{
+ xenUnifiedPrivatePtr priv = conn->privateData;
struct xenXMListIteratorContext ctx;
int i, ret = -1;
- if (!VIR_IS_CONNECT(conn)) {
- virReportError(VIR_ERR_INVALID_CONN, __FUNCTION__);
- return -1;
- }
-
- priv = conn->privateData;
xenUnifiedLock(priv);
if (!xenInotifyActive(conn) && xenXMConfigCacheRefresh(conn) < 0)
* Return the maximum number of defined domains - not filtered
* based on number running
*/
-int xenXMNumOfDefinedDomains(virConnectPtr conn) {
- xenUnifiedPrivatePtr priv;
+int
+xenXMNumOfDefinedDomains(virConnectPtr conn)
+{
+ xenUnifiedPrivatePtr priv = conn->privateData;
int ret = -1;
- if (!VIR_IS_CONNECT(conn)) {
- virReportError(VIR_ERR_INVALID_CONN, __FUNCTION__);
- return -1;
- }
-
- priv = conn->privateData;
xenUnifiedLock(priv);
if (!xenInotifyActive(conn) && xenXMConfigCacheRefresh(conn) < 0)
* Returns 0 in case of success, -1 in case of failure.
*/
static int
-xenXMDomainAttachDeviceFlags(virDomainPtr domain, const char *xml,
+xenXMDomainAttachDeviceFlags(virDomainPtr domain,
+ const char *xml,
unsigned int flags)
{
const char *filename = NULL;
int ret = -1;
virDomainDeviceDefPtr dev = NULL;
virDomainDefPtr def;
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1);
- if ((!domain) || (!domain->conn) || (!domain->name) || (!xml)) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
-
if (domain->conn->flags & VIR_CONNECT_RO)
return -1;
return -1;
}
- priv = (xenUnifiedPrivatePtr) domain->conn->privateData;
xenUnifiedLock(priv);
if (!(filename = virHashLookup(priv->nameConfigMap, domain->name)))
* Returns 0 in case of success, -1 in case of failure.
*/
static int
-xenXMDomainDetachDeviceFlags(virDomainPtr domain, const char *xml,
- unsigned int flags) {
+xenXMDomainDetachDeviceFlags(virDomainPtr domain,
+ const char *xml,
+ unsigned int flags)
+{
const char *filename = NULL;
xenXMConfCachePtr entry = NULL;
virDomainDeviceDefPtr dev = NULL;
virDomainDefPtr def;
int ret = -1;
int i;
- xenUnifiedPrivatePtr priv;
+ xenUnifiedPrivatePtr priv = domain->conn->privateData;
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1);
- if ((!domain) || (!domain->conn) || (!domain->name) || (!xml)) {
- virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__);
- return -1;
- }
-
if (domain->conn->flags & VIR_CONNECT_RO)
return -1;
return -1;
}
- priv = (xenUnifiedPrivatePtr) domain->conn->privateData;
xenUnifiedLock(priv);
if (!(filename = virHashLookup(priv->nameConfigMap, domain->name)))
}
-static char *xenXMAutostartLinkName(virDomainPtr dom)
+static char *
+xenXMAutostartLinkName(virDomainPtr dom)
{
char *ret;
if (virAsprintf(&ret, "/etc/xen/auto/%s", dom->name) < 0)
return ret;
}
-static char *xenXMDomainConfigName(virDomainPtr dom)
+static char *
+xenXMDomainConfigName(virDomainPtr dom)
{
char *ret;
if (virAsprintf(&ret, "/etc/xen/%s", dom->name) < 0)
return ret;
}
-int xenXMDomainGetAutostart(virDomainPtr dom, int *autostart)
+int
+xenXMDomainGetAutostart(virDomainPtr dom, int *autostart)
{
char *linkname = xenXMAutostartLinkName(dom);
char *config = xenXMDomainConfigName(dom);
}
-int xenXMDomainSetAutostart(virDomainPtr dom, int autostart)
+int
+xenXMDomainSetAutostart(virDomainPtr dom, int autostart)
{
char *linkname = xenXMAutostartLinkName(dom);
char *config = xenXMDomainConfigName(dom);