int
xenLinuxDomainBlockStats(xenUnifiedPrivatePtr priv,
- virDomainPtr dom,
+ virDomainDefPtr def,
const char *path,
struct _virDomainBlockStats *stats)
{
- int device = xenLinuxDomainDeviceID(dom->id, path);
+ int device = xenLinuxDomainDeviceID(def->id, path);
if (device < 0)
return -1;
- return read_bd_stats(priv, device, dom->id, stats);
+ return read_bd_stats(priv, device, def->id, stats);
}
#endif /* __linux__ */
# include "xen_driver.h"
extern int xenLinuxDomainBlockStats (xenUnifiedPrivatePtr priv,
- virDomainPtr dom, const char *path,
+ virDomainDefPtr def, const char *path,
struct _virDomainBlockStats *stats);
extern int xenLinuxDomainDeviceID(int domid, const char *dev);
xenUnifiedDomainBlockStats(virDomainPtr dom, const char *path,
struct _virDomainBlockStats *stats)
{
- return xenHypervisorDomainBlockStats(dom, path, stats);
+ virDomainDefPtr def = NULL;
+ int ret = -1;
+
+ if (!(def = xenGetDomainDefForDom(dom)))
+ goto cleanup;
+
+ ret = xenHypervisorDomainBlockStats(dom->conn, def, path, stats);
+
+cleanup:
+ virDomainDefFree(def);
+ return ret;
}
static int
xenUnifiedDomainInterfaceStats(virDomainPtr dom, const char *path,
struct _virDomainInterfaceStats *stats)
{
- return xenHypervisorDomainInterfaceStats(dom, path, stats);
+ virDomainDefPtr def = NULL;
+ int ret = -1;
+
+ if (!(def = xenGetDomainDefForDom(dom)))
+ goto cleanup;
+
+ ret = xenHypervisorDomainInterfaceStats(def, path, stats);
+
+cleanup:
+ virDomainDefFree(def);
+ return ret;
}
static int
void *buffer, unsigned int flags)
{
xenUnifiedPrivatePtr priv = dom->conn->privateData;
+ virDomainDefPtr def = NULL;
+ int ret = -1;
virCheckFlags(0, -1);
+ if (!(def = xenGetDomainDefForDom(dom)))
+ goto cleanup;
+
if (dom->id < 0 && priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
- return xenXMDomainBlockPeek(dom, path, offset, size, buffer);
+ ret = xenXMDomainBlockPeek(dom->conn, def, path, offset, size, buffer);
else
- return xenDaemonDomainBlockPeek(dom, path, offset, size, buffer);
+ ret = xenDaemonDomainBlockPeek(dom->conn, def, path, offset, size, buffer);
+
+cleanup:
+ virDomainDefFree(def);
+ return ret;
}
static int
int
-xenHypervisorDomainBlockStats(virDomainPtr dom,
+xenHypervisorDomainBlockStats(virConnectPtr conn,
+ virDomainDefPtr def,
const char *path,
struct _virDomainBlockStats *stats)
{
#ifdef __linux__
- xenUnifiedPrivatePtr priv = dom->conn->privateData;
+ xenUnifiedPrivatePtr priv = conn->privateData;
int ret;
xenUnifiedLock(priv);
/* Need to lock because it hits the xenstore handle :-( */
- ret = xenLinuxDomainBlockStats(priv, dom, path, stats);
+ ret = xenLinuxDomainBlockStats(priv, def, path, stats);
xenUnifiedUnlock(priv);
return ret;
#else
* virNetwork interface, as yet not decided.
*/
int
-xenHypervisorDomainInterfaceStats(virDomainPtr dom,
+xenHypervisorDomainInterfaceStats(virDomainDefPtr def,
const char *path,
struct _virDomainInterfaceStats *stats)
{
_("invalid path, should be vif<domid>.<n>."));
return -1;
}
- if (rqdomid != dom->id) {
+ if (rqdomid != def->id) {
virReportError(VIR_ERR_INVALID_ARG, "%s",
_("invalid path, vif<domid> should match this domain ID"));
return -1;
int nparams)
ATTRIBUTE_NONNULL (1);
-int xenHypervisorDomainBlockStats (virDomainPtr domain,
+int xenHypervisorDomainBlockStats (virConnectPtr conn,
+ virDomainDefPtr def,
const char *path,
struct _virDomainBlockStats *stats)
ATTRIBUTE_NONNULL (1);
-int xenHypervisorDomainInterfaceStats (virDomainPtr domain,
- const char *path,
- struct _virDomainInterfaceStats *stats)
+int xenHypervisorDomainInterfaceStats (virDomainDefPtr def,
+ const char *path,
+ struct _virDomainInterfaceStats *stats)
ATTRIBUTE_NONNULL (1);
int xenHypervisorNodeGetCellsFreeMemory(virConnectPtr conn,
/**
* xenDaemonDomainBlockPeek:
- * @domain: domain object
+ * @conn: the hypervisor connection
+ * @minidef: minimal domain configuration
* @path: path to the file or device
* @offset: offset
* @size: size
* Returns 0 if successful, -1 if error
*/
int
-xenDaemonDomainBlockPeek(virDomainPtr domain,
+xenDaemonDomainBlockPeek(virConnectPtr conn,
+ virDomainDefPtr minidef,
const char *path,
unsigned long long offset,
size_t size,
void *buffer)
{
- xenUnifiedPrivatePtr priv = domain->conn->privateData;
+ xenUnifiedPrivatePtr priv = conn->privateData;
struct sexpr *root = NULL;
int fd = -1, ret = -1;
virDomainDefPtr def;
const char *actual;
/* Security check: The path must correspond to a block device. */
- if (domain->id > 0)
- root = sexpr_get(domain->conn, "/xend/domain/%d?detail=1",
- domain->id);
- else if (domain->id < 0)
- root = sexpr_get(domain->conn, "/xend/domain/%s?detail=1",
- domain->name);
+ if (minidef->id > 0)
+ root = sexpr_get(conn, "/xend/domain/%d?detail=1",
+ minidef->id);
+ else if (minidef->id < 0)
+ root = sexpr_get(conn, "/xend/domain/%s?detail=1",
+ minidef->name);
else {
/* This call always fails for dom0. */
virReportError(VIR_ERR_OPERATION_INVALID,
id = xenGetDomIdFromSxpr(root, priv->xendConfigVersion);
xenUnifiedLock(priv);
- tty = xenStoreDomainGetConsolePath(domain->conn, id);
- vncport = xenStoreDomainGetVNCPort(domain->conn, id);
+ tty = xenStoreDomainGetConsolePath(conn, id);
+ vncport = xenStoreDomainGetVNCPort(conn, id);
xenUnifiedUnlock(priv);
if (!(def = xenParseSxpr(root, priv->xendConfigVersion, NULL, tty,
/**
* virDomainXMLDevID:
- * @domain: pointer to domain object
+ * @conn: the hypervisor connection
+ * @minidef: minimal domain configuration
* @dev: pointer to device config object
* @class: Xen device class "vbd" or "vif" (OUT)
* @ref: Xen device reference (OUT)
const char *uri, unsigned long flags,
const char *dname, unsigned long resource);
-int xenDaemonDomainBlockPeek (virDomainPtr domain, const char *path, unsigned long long offset, size_t size, void *buffer);
+int xenDaemonDomainBlockPeek(virConnectPtr conn,
+ virDomainDefPtr def,
+ const char *path,
+ unsigned long long offset,
+ size_t size,
+ void *buffer);
char * xenDaemonGetSchedulerType(virConnectPtr conn,
int *nparams);
}
int
-xenXMDomainBlockPeek(virDomainPtr dom ATTRIBUTE_UNUSED,
+xenXMDomainBlockPeek(virConnectPtr conn ATTRIBUTE_UNUSED,
+ virDomainDefPtr def ATTRIBUTE_UNUSED,
const char *path ATTRIBUTE_UNUSED,
unsigned long long offset ATTRIBUTE_UNUSED,
size_t size ATTRIBUTE_UNUSED,
int xenXMDomainDefineXML(virConnectPtr con, virDomainDefPtr def);
int xenXMDomainUndefine(virConnectPtr conn, virDomainDefPtr def);
-int xenXMDomainBlockPeek (virDomainPtr dom, const char *path, unsigned long long offset, size_t size, void *buffer);
+int xenXMDomainBlockPeek(virConnectPtr conn,
+ virDomainDefPtr def,
+ const char *path,
+ unsigned long long offset,
+ size_t size,
+ void *buffer);
int xenXMDomainGetAutostart(virDomainDefPtr def,
int *autostart);