Re: [libvirt] [PATCH 17/40] Simplify the Xen domain get/set (max) memory driver methods
Daniel P. Berrange wrote: From: Daniel P. Berrange berra...@redhat.com Simplify the Xen memory limit driver methods to directly call the most appropriate sub-driver Signed-off-by: Daniel P. Berrange berra...@redhat.com --- src/xen/xen_driver.c | 50 ++- src/xen/xen_driver.h | 3 -- src/xen/xen_hypervisor.c | 35 --- src/xen/xen_hypervisor.h | 3 +- src/xen/xend_internal.c | 15 src/xen/xm_internal.c| 16 + src/xen/xs_internal.c| 90 src/xen/xs_internal.h| 4 --- 8 files changed, 36 insertions(+), 180 deletions(-) Another nice cleanup. I've tested this one as well and didn't notice any problems. ACK. I'll have to continue with the reviews tomorrow. Regards, Jim diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c index 8ee3c4c..7d09c6b 100644 --- a/src/xen/xen_driver.c +++ b/src/xen/xen_driver.c @@ -801,53 +801,41 @@ static unsigned long long xenUnifiedDomainGetMaxMemory(virDomainPtr dom) { xenUnifiedPrivatePtr priv = dom-conn-privateData; -int i; -unsigned long long ret; - -for (i = 0; i XEN_UNIFIED_NR_DRIVERS; ++i) -if (priv-opened[i] drivers[i]-xenDomainGetMaxMemory) { -ret = drivers[i]-xenDomainGetMaxMemory(dom); -if (ret != 0) return ret; -} -return 0; +if (dom-id 0) { +if (priv-xendConfigVersion XEND_CONFIG_VERSION_3_0_4) +return xenXMDomainGetMaxMemory(dom); +else +return xenDaemonDomainGetMaxMemory(dom); +} else { +return xenHypervisorGetMaxMemory(dom); +} } static int xenUnifiedDomainSetMaxMemory(virDomainPtr dom, unsigned long memory) { xenUnifiedPrivatePtr priv = dom-conn-privateData; -int i; -/* Prefer xend for setting max memory */ -if (priv-opened[XEN_UNIFIED_XEND_OFFSET]) { -if (xenDaemonDomainSetMaxMemory(dom, memory) == 0) -return 0; +if (dom-id 0) { +if (priv-xendConfigVersion XEND_CONFIG_VERSION_3_0_4) +return xenXMDomainSetMaxMemory(dom, memory); +else +return xenDaemonDomainSetMaxMemory(dom, memory); +} else { +return xenHypervisorSetMaxMemory(dom, memory); } - -for (i = 0; i XEN_UNIFIED_NR_DRIVERS; ++i) -if (i != XEN_UNIFIED_XEND_OFFSET -priv-opened[i] -drivers[i]-xenDomainSetMaxMemory -drivers[i]-xenDomainSetMaxMemory(dom, memory) == 0) -return 0; - -return -1; } static int xenUnifiedDomainSetMemory(virDomainPtr dom, unsigned long memory) { xenUnifiedPrivatePtr priv = dom-conn-privateData; -int i; - -for (i = 0; i XEN_UNIFIED_NR_DRIVERS; ++i) -if (priv-opened[i] -drivers[i]-xenDomainSetMemory -drivers[i]-xenDomainSetMemory(dom, memory) == 0) -return 0; -return -1; +if (dom-id 0 priv-xendConfigVersion XEND_CONFIG_VERSION_3_0_4) +return xenXMDomainSetMemory(dom, memory); +else +return xenDaemonDomainSetMemory(dom, memory); } static int diff --git a/src/xen/xen_driver.h b/src/xen/xen_driver.h index 16e9743..4509161 100644 --- a/src/xen/xen_driver.h +++ b/src/xen/xen_driver.h @@ -93,9 +93,6 @@ extern int xenRegister (void); * structure with direct calls in xen_unified.c. */ struct xenUnifiedDriver { -virDrvDomainGetMaxMemory xenDomainGetMaxMemory; -virDrvDomainSetMaxMemory xenDomainSetMaxMemory; -virDrvDomainSetMemory xenDomainSetMemory; virDrvDomainGetInfo xenDomainGetInfo; virDrvDomainPinVcpu xenDomainPinVcpu; virDrvDomainGetVcpus xenDomainGetVcpus; diff --git a/src/xen/xen_hypervisor.c b/src/xen/xen_hypervisor.c index 8636d52..7662843 100644 --- a/src/xen/xen_hypervisor.c +++ b/src/xen/xen_hypervisor.c @@ -870,11 +870,7 @@ typedef struct xen_op_v2_dom xen_op_v2_dom; # error unsupported platform #endif -static unsigned long long xenHypervisorGetMaxMemory(virDomainPtr domain); - struct xenUnifiedDriver xenHypervisorDriver = { -.xenDomainGetMaxMemory = xenHypervisorGetMaxMemory, -.xenDomainSetMaxMemory = xenHypervisorSetMaxMemory, .xenDomainGetInfo = xenHypervisorGetDomainInfo, .xenDomainPinVcpu = xenHypervisorPinVcpu, .xenDomainGetVcpus = xenHypervisorGetVcpus, @@ -2763,9 +2759,8 @@ xenHypervisorGetMaxVcpus(virConnectPtr conn ATTRIBUTE_UNUSED, } /** - * xenHypervisorGetDomMaxMemory: - * @conn: connection data - * @id: domain id + * xenHypervisorDomMaxMemory: + * @dom: domain * * Retrieve the maximum amount of physical memory allocated to a * domain. @@ -2773,9 +2768,9 @@ xenHypervisorGetMaxVcpus(virConnectPtr conn ATTRIBUTE_UNUSED, * Returns the memory size in kilobytes or 0 in case of error. */ unsigned long
[libvirt] [PATCH 17/40] Simplify the Xen domain get/set (max) memory driver methods
From: Daniel P. Berrange berra...@redhat.com Simplify the Xen memory limit driver methods to directly call the most appropriate sub-driver Signed-off-by: Daniel P. Berrange berra...@redhat.com --- src/xen/xen_driver.c | 50 ++- src/xen/xen_driver.h | 3 -- src/xen/xen_hypervisor.c | 35 --- src/xen/xen_hypervisor.h | 3 +- src/xen/xend_internal.c | 15 src/xen/xm_internal.c| 16 + src/xen/xs_internal.c| 90 src/xen/xs_internal.h| 4 --- 8 files changed, 36 insertions(+), 180 deletions(-) diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c index 8ee3c4c..7d09c6b 100644 --- a/src/xen/xen_driver.c +++ b/src/xen/xen_driver.c @@ -801,53 +801,41 @@ static unsigned long long xenUnifiedDomainGetMaxMemory(virDomainPtr dom) { xenUnifiedPrivatePtr priv = dom-conn-privateData; -int i; -unsigned long long ret; - -for (i = 0; i XEN_UNIFIED_NR_DRIVERS; ++i) -if (priv-opened[i] drivers[i]-xenDomainGetMaxMemory) { -ret = drivers[i]-xenDomainGetMaxMemory(dom); -if (ret != 0) return ret; -} -return 0; +if (dom-id 0) { +if (priv-xendConfigVersion XEND_CONFIG_VERSION_3_0_4) +return xenXMDomainGetMaxMemory(dom); +else +return xenDaemonDomainGetMaxMemory(dom); +} else { +return xenHypervisorGetMaxMemory(dom); +} } static int xenUnifiedDomainSetMaxMemory(virDomainPtr dom, unsigned long memory) { xenUnifiedPrivatePtr priv = dom-conn-privateData; -int i; -/* Prefer xend for setting max memory */ -if (priv-opened[XEN_UNIFIED_XEND_OFFSET]) { -if (xenDaemonDomainSetMaxMemory(dom, memory) == 0) -return 0; +if (dom-id 0) { +if (priv-xendConfigVersion XEND_CONFIG_VERSION_3_0_4) +return xenXMDomainSetMaxMemory(dom, memory); +else +return xenDaemonDomainSetMaxMemory(dom, memory); +} else { +return xenHypervisorSetMaxMemory(dom, memory); } - -for (i = 0; i XEN_UNIFIED_NR_DRIVERS; ++i) -if (i != XEN_UNIFIED_XEND_OFFSET -priv-opened[i] -drivers[i]-xenDomainSetMaxMemory -drivers[i]-xenDomainSetMaxMemory(dom, memory) == 0) -return 0; - -return -1; } static int xenUnifiedDomainSetMemory(virDomainPtr dom, unsigned long memory) { xenUnifiedPrivatePtr priv = dom-conn-privateData; -int i; - -for (i = 0; i XEN_UNIFIED_NR_DRIVERS; ++i) -if (priv-opened[i] -drivers[i]-xenDomainSetMemory -drivers[i]-xenDomainSetMemory(dom, memory) == 0) -return 0; -return -1; +if (dom-id 0 priv-xendConfigVersion XEND_CONFIG_VERSION_3_0_4) +return xenXMDomainSetMemory(dom, memory); +else +return xenDaemonDomainSetMemory(dom, memory); } static int diff --git a/src/xen/xen_driver.h b/src/xen/xen_driver.h index 16e9743..4509161 100644 --- a/src/xen/xen_driver.h +++ b/src/xen/xen_driver.h @@ -93,9 +93,6 @@ extern int xenRegister (void); * structure with direct calls in xen_unified.c. */ struct xenUnifiedDriver { -virDrvDomainGetMaxMemory xenDomainGetMaxMemory; -virDrvDomainSetMaxMemory xenDomainSetMaxMemory; -virDrvDomainSetMemory xenDomainSetMemory; virDrvDomainGetInfo xenDomainGetInfo; virDrvDomainPinVcpu xenDomainPinVcpu; virDrvDomainGetVcpus xenDomainGetVcpus; diff --git a/src/xen/xen_hypervisor.c b/src/xen/xen_hypervisor.c index 8636d52..7662843 100644 --- a/src/xen/xen_hypervisor.c +++ b/src/xen/xen_hypervisor.c @@ -870,11 +870,7 @@ typedef struct xen_op_v2_dom xen_op_v2_dom; # error unsupported platform #endif -static unsigned long long xenHypervisorGetMaxMemory(virDomainPtr domain); - struct xenUnifiedDriver xenHypervisorDriver = { -.xenDomainGetMaxMemory = xenHypervisorGetMaxMemory, -.xenDomainSetMaxMemory = xenHypervisorSetMaxMemory, .xenDomainGetInfo = xenHypervisorGetDomainInfo, .xenDomainPinVcpu = xenHypervisorPinVcpu, .xenDomainGetVcpus = xenHypervisorGetVcpus, @@ -2763,9 +2759,8 @@ xenHypervisorGetMaxVcpus(virConnectPtr conn ATTRIBUTE_UNUSED, } /** - * xenHypervisorGetDomMaxMemory: - * @conn: connection data - * @id: domain id + * xenHypervisorDomMaxMemory: + * @dom: domain * * Retrieve the maximum amount of physical memory allocated to a * domain. @@ -2773,9 +2768,9 @@ xenHypervisorGetMaxVcpus(virConnectPtr conn ATTRIBUTE_UNUSED, * Returns the memory size in kilobytes or 0 in case of error. */ unsigned long -xenHypervisorGetDomMaxMemory(virConnectPtr conn, int id) +xenHypervisorGetMaxMemory(virDomainPtr dom) { -xenUnifiedPrivatePtr priv = conn-privateData; +xenUnifiedPrivatePtr priv = dom-conn-privateData; xen_getdomaininfo dominfo; int ret; @@ -2787,32 +2782,14 @@ xenHypervisorGetDomMaxMemory(virConnectPtr conn, int id)