From eed1de14b59208104911a2d09f37bda386327fed Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Tue, 30 Apr 2013 17:55:18 +0100 Subject: [PATCH] Simplify the Xen domain stats/peek / node memory driver methods Make the Xen domain stats / peek and node memory driver methods unconditionally call the sub-drivers which are guaranteed to be open. Signed-off-by: Daniel P. Berrange --- src/xen/xen_driver.c | 59 ++++++++--------------------------------- src/xen/xend_internal.c | 5 +--- 2 files changed, 12 insertions(+), 52 deletions(-) diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c index 703116ffb7..cc54f7ab85 100644 --- a/src/xen/xen_driver.c +++ b/src/xen/xen_driver.c @@ -1575,26 +1575,14 @@ static int xenUnifiedDomainBlockStats(virDomainPtr dom, const char *path, struct _virDomainBlockStats *stats) { - xenUnifiedPrivatePtr priv = dom->conn->privateData; - - if (priv->opened[XEN_UNIFIED_HYPERVISOR_OFFSET]) - return xenHypervisorDomainBlockStats(dom, path, stats); - - virReportError(VIR_ERR_NO_SUPPORT, __FUNCTION__); - return -1; + return xenHypervisorDomainBlockStats(dom, path, stats); } static int xenUnifiedDomainInterfaceStats(virDomainPtr dom, const char *path, struct _virDomainInterfaceStats *stats) { - xenUnifiedPrivatePtr priv = dom->conn->privateData; - - if (priv->opened[XEN_UNIFIED_HYPERVISOR_OFFSET]) - return xenHypervisorDomainInterfaceStats(dom, path, stats); - - virReportError(VIR_ERR_NO_SUPPORT, __FUNCTION__); - return -1; + return xenHypervisorDomainInterfaceStats(dom, path, stats); } static int @@ -1602,57 +1590,32 @@ xenUnifiedDomainBlockPeek(virDomainPtr dom, const char *path, unsigned long long offset, size_t size, void *buffer, unsigned int flags) { - int r; xenUnifiedPrivatePtr priv = dom->conn->privateData; virCheckFlags(0, -1); - if (priv->opened[XEN_UNIFIED_XEND_OFFSET]) { - r = xenDaemonDomainBlockPeek(dom, path, offset, size, buffer); - if (r != -2) return r; - /* r == -2 means declined, so fall through to XM driver ... */ - } - - if (priv->opened[XEN_UNIFIED_XM_OFFSET]) { - if (xenXMDomainBlockPeek(dom, path, offset, size, buffer) == 0) - return 0; - } - - virReportError(VIR_ERR_NO_SUPPORT, __FUNCTION__); - return -1; + if (dom->id < 0 && priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4) + return xenXMDomainBlockPeek(dom, path, offset, size, buffer); + else + return xenDaemonDomainBlockPeek(dom, path, offset, size, buffer); } static int xenUnifiedNodeGetCellsFreeMemory(virConnectPtr conn, unsigned long long *freeMems, int startCell, int maxCells) { - xenUnifiedPrivatePtr priv = conn->privateData; - - if (priv->opened[XEN_UNIFIED_HYPERVISOR_OFFSET]) - return xenHypervisorNodeGetCellsFreeMemory(conn, freeMems, - startCell, maxCells); - - virReportError(VIR_ERR_NO_SUPPORT, __FUNCTION__); - return -1; + return xenHypervisorNodeGetCellsFreeMemory(conn, freeMems, + startCell, maxCells); } static unsigned long long xenUnifiedNodeGetFreeMemory(virConnectPtr conn) { unsigned long long freeMem = 0; - int ret; - xenUnifiedPrivatePtr priv = conn->privateData; - if (priv->opened[XEN_UNIFIED_HYPERVISOR_OFFSET]) { - ret = xenHypervisorNodeGetCellsFreeMemory(conn, &freeMem, - -1, 1); - if (ret != 1) - return 0; - return freeMem; - } - - virReportError(VIR_ERR_NO_SUPPORT, __FUNCTION__); - return 0; + if (xenHypervisorNodeGetCellsFreeMemory(conn, &freeMem, -1, 1) < 0) + return 0; + return freeMem; } diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c index 53a8ca0275..aec57f5213 100644 --- a/src/xen/xend_internal.c +++ b/src/xen/xend_internal.c @@ -3240,7 +3240,7 @@ error: * @size: size * @buffer: return buffer * - * Returns 0 if successful, -1 if error, -2 if declined. + * Returns 0 if successful, -1 if error */ int xenDaemonDomainBlockPeek(virDomainPtr domain, @@ -3258,9 +3258,6 @@ xenDaemonDomainBlockPeek(virDomainPtr domain, int vncport; const char *actual; - if (domain->id < 0 && priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4) - return -2; /* Decline, allow XM to handle it. */ - /* Security check: The path must correspond to a block device. */ if (domain->id > 0) root = sexpr_get(domain->conn, "/xend/domain/%d?detail=1", -- GitLab