提交 eed1de14 编写于 作者: D Daniel P. Berrange

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: NDaniel P. Berrange <berrange@redhat.com>
上级 7329f91f
......@@ -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;
}
......
......@@ -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",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册