]> xenbits.xensource.com Git - libvirt.git/commitdiff
Simplify the Xen domain suspend/resume driver methods
authorDaniel P. Berrange <berrange@redhat.com>
Tue, 30 Apr 2013 14:33:51 +0000 (15:33 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Thu, 9 May 2013 12:16:19 +0000 (13:16 +0100)
Update xenUnifiedDomainSuspend and xenUnifiedDomainResume to
unconditionally invoke the XenD APIs for suspend/resume. Delete
the impls in the hypervisor driver which was unreachable.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
src/xen/xen_driver.c
src/xen/xen_driver.h
src/xen/xen_hypervisor.c
src/xen/xen_hypervisor.h
src/xen/xend_internal.c

index f8eca48c1946aa3870dd37baeba3786b0e4e8802..6cf61b9b45ea264df4e10f69bc7eec6b3e9f4ee4 100644 (file)
@@ -742,47 +742,13 @@ xenUnifiedDomainIsUpdated(virDomainPtr dom ATTRIBUTE_UNUSED)
 static int
 xenUnifiedDomainSuspend(virDomainPtr dom)
 {
-    xenUnifiedPrivatePtr priv = dom->conn->privateData;
-    int i;
-
-    /* Try non-hypervisor methods first, then hypervisor direct method
-     * as a last resort.
-     */
-    for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
-        if (i != XEN_UNIFIED_HYPERVISOR_OFFSET &&
-            priv->opened[i] &&
-            drivers[i]->xenDomainSuspend &&
-            drivers[i]->xenDomainSuspend(dom) == 0)
-            return 0;
-
-    if (priv->opened[XEN_UNIFIED_HYPERVISOR_OFFSET] &&
-        xenHypervisorPauseDomain(dom) == 0)
-        return 0;
-
-    return -1;
+    return xenDaemonDomainSuspend(dom);
 }
 
 static int
 xenUnifiedDomainResume(virDomainPtr dom)
 {
-    xenUnifiedPrivatePtr priv = dom->conn->privateData;
-    int i;
-
-    /* Try non-hypervisor methods first, then hypervisor direct method
-     * as a last resort.
-     */
-    for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
-        if (i != XEN_UNIFIED_HYPERVISOR_OFFSET &&
-            priv->opened[i] &&
-            drivers[i]->xenDomainResume &&
-            drivers[i]->xenDomainResume(dom) == 0)
-            return 0;
-
-    if (priv->opened[XEN_UNIFIED_HYPERVISOR_OFFSET] &&
-        xenHypervisorResumeDomain(dom) == 0)
-        return 0;
-
-    return -1;
+    return xenDaemonDomainResume(dom);
 }
 
 static int
index 803fee7c040296fbf9a01c1c54e85b73c2c75119..ac38b19659720065167261c6bbbf086349940c6f 100644 (file)
@@ -94,8 +94,6 @@ extern int xenRegister (void);
  */
 struct xenUnifiedDriver {
     virDrvConnectGetHostname xenGetHostname;
-    virDrvDomainSuspend xenDomainSuspend;
-    virDrvDomainResume xenDomainResume;
     virDrvDomainShutdown xenDomainShutdown;
     virDrvDomainReboot xenDomainReboot;
     virDrvDomainDestroyFlags xenDomainDestroyFlags;
index f6bce90bc58df49e424cab8e149f6c26271d6887..bc636488002480e811ff38160b43a3d9da3398a8 100644 (file)
@@ -880,8 +880,6 @@ typedef struct xen_op_v2_dom xen_op_v2_dom;
 static unsigned long long xenHypervisorGetMaxMemory(virDomainPtr domain);
 
 struct xenUnifiedDriver xenHypervisorDriver = {
-    .xenDomainSuspend = xenHypervisorPauseDomain,
-    .xenDomainResume = xenHypervisorResumeDomain,
     .xenDomainDestroyFlags = xenHypervisorDestroyDomainFlags,
     .xenDomainGetOSType = xenHypervisorDomainGetOSType,
     .xenDomainGetMaxMemory = xenHypervisorGetMaxMemory,
@@ -1486,83 +1484,6 @@ xenHypervisorDomainInterfaceStats(virDomainPtr dom,
 #endif
 }
 
-/**
- * virXen_pausedomain:
- * @handle: the hypervisor handle
- * @id: the domain id
- *
- * Do a low level hypercall to pause the domain
- *
- * Returns 0 or -1 in case of failure
- */
-static int
-virXen_pausedomain(int handle, int id)
-{
-    int ret = -1;
-
-    if (hv_versions.hypervisor > 1) {
-        xen_op_v2_dom op;
-
-        memset(&op, 0, sizeof(op));
-        op.cmd = XEN_V2_OP_PAUSEDOMAIN;
-        op.domain = (domid_t) id;
-        ret = xenHypervisorDoV2Dom(handle, &op);
-    } else if (hv_versions.hypervisor == 1) {
-        xen_op_v1 op;
-
-        memset(&op, 0, sizeof(op));
-        op.cmd = XEN_V1_OP_PAUSEDOMAIN;
-        op.u.domain.domain = (domid_t) id;
-        ret = xenHypervisorDoV1Op(handle, &op);
-    } else if (hv_versions.hypervisor == 0) {
-        xen_op_v0 op;
-
-        memset(&op, 0, sizeof(op));
-        op.cmd = XEN_V0_OP_PAUSEDOMAIN;
-        op.u.domain.domain = (domid_t) id;
-        ret = xenHypervisorDoV0Op(handle, &op);
-    }
-    return ret;
-}
-
-/**
- * virXen_unpausedomain:
- * @handle: the hypervisor handle
- * @id: the domain id
- *
- * Do a low level hypercall to unpause the domain
- *
- * Returns 0 or -1 in case of failure
- */
-static int
-virXen_unpausedomain(int handle, int id)
-{
-    int ret = -1;
-
-    if (hv_versions.hypervisor > 1) {
-        xen_op_v2_dom op;
-
-        memset(&op, 0, sizeof(op));
-        op.cmd = XEN_V2_OP_UNPAUSEDOMAIN;
-        op.domain = (domid_t) id;
-        ret = xenHypervisorDoV2Dom(handle, &op);
-    } else if (hv_versions.hypervisor == 1) {
-        xen_op_v1 op;
-
-        memset(&op, 0, sizeof(op));
-        op.cmd = XEN_V1_OP_UNPAUSEDOMAIN;
-        op.u.domain.domain = (domid_t) id;
-        ret = xenHypervisorDoV1Op(handle, &op);
-    } else if (hv_versions.hypervisor == 0) {
-        xen_op_v0 op;
-
-        memset(&op, 0, sizeof(op));
-        op.cmd = XEN_V0_OP_UNPAUSEDOMAIN;
-        op.u.domain.domain = (domid_t) id;
-        ret = xenHypervisorDoV0Op(handle, &op);
-    }
-    return ret;
-}
 
 /**
  * virXen_destroydomain:
@@ -3142,52 +3063,6 @@ xenHypervisorNodeGetCellsFreeMemory(virConnectPtr conn,
 }
 
 
-/**
- * xenHypervisorPauseDomain:
- * @domain: pointer to the domain block
- *
- * Do a hypervisor call to pause the given domain
- *
- * Returns 0 in case of success, -1 in case of error.
- */
-int
-xenHypervisorPauseDomain(virDomainPtr domain)
-{
-    int ret;
-    xenUnifiedPrivatePtr priv = domain->conn->privateData;
-
-    if (domain->id < 0)
-        return -1;
-
-    ret = virXen_pausedomain(priv->handle, domain->id);
-    if (ret < 0)
-        return -1;
-    return 0;
-}
-
-/**
- * xenHypervisorResumeDomain:
- * @domain: pointer to the domain block
- *
- * Do a hypervisor call to resume the given domain
- *
- * Returns 0 in case of success, -1 in case of error.
- */
-int
-xenHypervisorResumeDomain(virDomainPtr domain)
-{
-    int ret;
-    xenUnifiedPrivatePtr priv = domain->conn->privateData;
-
-    if (domain->id < 0)
-        return -1;
-
-    ret = virXen_unpausedomain(priv->handle, domain->id);
-    if (ret < 0)
-        return -1;
-    return 0;
-}
-
 /**
  * xenHypervisorDestroyDomainFlags:
  * @domain: pointer to the domain block
index 949311db138fa96672e988c7f6c1a731b09b959c..812816d9ad585a59b595ad1fa6affc8b43125bfb 100644 (file)
@@ -77,10 +77,6 @@ int     xenHypervisorDestroyDomain      (virDomainPtr domain)
 int     xenHypervisorDestroyDomainFlags (virDomainPtr domain,
                                          unsigned int flags)
           ATTRIBUTE_NONNULL (1);
-int     xenHypervisorResumeDomain       (virDomainPtr domain)
-          ATTRIBUTE_NONNULL (1);
-int     xenHypervisorPauseDomain        (virDomainPtr domain)
-          ATTRIBUTE_NONNULL (1);
 int     xenHypervisorGetDomainInfo        (virDomainPtr domain,
                                            virDomainInfoPtr info)
           ATTRIBUTE_NONNULL (1);
index 65721464d7b534fcecd3afba837b9479d09d8ad6..ba31a4ec5d00ca59b1a7dfc838d7a42732010c4e 100644 (file)
@@ -3450,8 +3450,6 @@ xenDaemonDomainBlockPeek(virDomainPtr domain,
 }
 
 struct xenUnifiedDriver xenDaemonDriver = {
-    .xenDomainSuspend = xenDaemonDomainSuspend,
-    .xenDomainResume = xenDaemonDomainResume,
     .xenDomainShutdown = xenDaemonDomainShutdown,
     .xenDomainReboot = xenDaemonDomainReboot,
     .xenDomainDestroyFlags = xenDaemonDomainDestroyFlags,