diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c index 3d4d118096..63295357b6 100644 --- a/src/xen/xen_driver.c +++ b/src/xen/xen_driver.c @@ -583,55 +583,13 @@ xenUnifiedConnectGetCapabilities(virConnectPtr conn) static int xenUnifiedConnectListDomains(virConnectPtr conn, int *ids, int maxids) { - xenUnifiedPrivatePtr priv = conn->privateData; - int ret; - - /* Try xenstore. */ - if (priv->opened[XEN_UNIFIED_XS_OFFSET]) { - ret = xenStoreListDomains(conn, ids, maxids); - if (ret >= 0) return ret; - } - - /* Try HV. */ - if (priv->opened[XEN_UNIFIED_HYPERVISOR_OFFSET]) { - ret = xenHypervisorListDomains(conn, ids, maxids); - if (ret >= 0) return ret; - } - - /* Try xend. */ - if (priv->opened[XEN_UNIFIED_XEND_OFFSET]) { - ret = xenDaemonListDomains(conn, ids, maxids); - if (ret >= 0) return ret; - } - - return -1; + return xenStoreListDomains(conn, ids, maxids); } static int xenUnifiedConnectNumOfDomains(virConnectPtr conn) { - xenUnifiedPrivatePtr priv = conn->privateData; - int ret; - - /* Try xenstore. */ - if (priv->opened[XEN_UNIFIED_XS_OFFSET]) { - ret = xenStoreNumOfDomains(conn); - if (ret >= 0) return ret; - } - - /* Try HV. */ - if (priv->opened[XEN_UNIFIED_HYPERVISOR_OFFSET]) { - ret = xenHypervisorNumOfDomains(conn); - if (ret >= 0) return ret; - } - - /* Try xend. */ - if (priv->opened[XEN_UNIFIED_XEND_OFFSET]) { - ret = xenDaemonNumOfDomains(conn); - if (ret >= 0) return ret; - } - - return -1; + return xenStoreNumOfDomains(conn); } static virDomainPtr diff --git a/src/xen/xen_hypervisor.c b/src/xen/xen_hypervisor.c index c0bdf52f88..f6bce90bc5 100644 --- a/src/xen/xen_hypervisor.c +++ b/src/xen/xen_hypervisor.c @@ -2729,107 +2729,6 @@ xenHypervisorGetCapabilities(virConnectPtr conn) } -/** - * xenHypervisorNumOfDomains: - * @conn: pointer to the connection block - * - * Provides the number of active domains. - * - * Returns the number of domain found or -1 in case of error - */ -int -xenHypervisorNumOfDomains(virConnectPtr conn) -{ - xen_getdomaininfolist dominfos; - int ret, nbids; - static int last_maxids = 2; - int maxids = last_maxids; - xenUnifiedPrivatePtr priv = conn->privateData; - - retry: - if (!(XEN_GETDOMAININFOLIST_ALLOC(dominfos, maxids))) { - virReportOOMError(); - return -1; - } - - XEN_GETDOMAININFOLIST_CLEAR(dominfos, maxids); - - ret = virXen_getdomaininfolist(priv->handle, 0, maxids, &dominfos); - - XEN_GETDOMAININFOLIST_FREE(dominfos); - - if (ret < 0) - return -1; - - nbids = ret; - /* Can't possibly have more than 65,000 concurrent guests - * so limit how many times we try, to avoid increasing - * without bound & thus allocating all of system memory ! - * XXX I'll regret this comment in a few years time ;-) - */ - if (nbids == maxids) { - if (maxids < 65000) { - last_maxids *= 2; - maxids *= 2; - goto retry; - } - nbids = -1; - } - if ((nbids < 0) || (nbids > maxids)) - return -1; - return nbids; -} - -/** - * xenHypervisorListDomains: - * @conn: pointer to the connection block - * @ids: array to collect the list of IDs of active domains - * @maxids: size of @ids - * - * Collect the list of active domains, and store their ID in @maxids - * - * Returns the number of domain found or -1 in case of error - */ -int -xenHypervisorListDomains(virConnectPtr conn, int *ids, int maxids) -{ - xen_getdomaininfolist dominfos; - int ret, nbids, i; - xenUnifiedPrivatePtr priv = conn->privateData; - - if (maxids == 0) - return 0; - - if (!(XEN_GETDOMAININFOLIST_ALLOC(dominfos, maxids))) { - virReportOOMError(); - return -1; - } - - XEN_GETDOMAININFOLIST_CLEAR(dominfos, maxids); - memset(ids, 0, maxids * sizeof(int)); - - ret = virXen_getdomaininfolist(priv->handle, 0, maxids, &dominfos); - - if (ret < 0) { - XEN_GETDOMAININFOLIST_FREE(dominfos); - return -1; - } - - nbids = ret; - if ((nbids < 0) || (nbids > maxids)) { - XEN_GETDOMAININFOLIST_FREE(dominfos); - return -1; - } - - for (i = 0;i < nbids;i++) { - ids[i] = XEN_GETDOMAININFOLIST_DOMAIN(dominfos, i); - } - - XEN_GETDOMAININFOLIST_FREE(dominfos); - return nbids; -} - - char * xenHypervisorDomainGetOSType(virDomainPtr dom) { diff --git a/src/xen/xen_hypervisor.h b/src/xen/xen_hypervisor.h index 86dca882c8..949311db13 100644 --- a/src/xen/xen_hypervisor.h +++ b/src/xen/xen_hypervisor.h @@ -70,10 +70,6 @@ char * unsigned long xenHypervisorGetDomMaxMemory (virConnectPtr conn, int id); -int xenHypervisorNumOfDomains (virConnectPtr conn); -int xenHypervisorListDomains (virConnectPtr conn, - int *ids, - int maxids); int xenHypervisorGetMaxVcpus (virConnectPtr conn, const char *type); int xenHypervisorDestroyDomain (virDomainPtr domain) diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c index 4866b36d66..6cd5469ffc 100644 --- a/src/xen/xend_internal.c +++ b/src/xen/xend_internal.c @@ -1862,87 +1862,6 @@ xenDaemonNodeGetTopology(virConnectPtr conn, virCapsPtr caps) } -/** - * xenDaemonListDomains: - * @conn: pointer to the hypervisor connection - * @ids: array to collect the list of IDs of active domains - * @maxids: size of @ids - * - * Collect the list of active domains, and store their ID in @maxids - * TODO: this is quite expensive at the moment since there isn't one - * xend RPC providing both name and id for all domains. - * - * Returns the number of domain found or -1 in case of error - */ -int -xenDaemonListDomains(virConnectPtr conn, int *ids, int maxids) -{ - struct sexpr *root = NULL; - int ret = -1; - struct sexpr *_for_i, *node; - long id; - - if (maxids == 0) - return 0; - - root = sexpr_get(conn, "/xend/domain"); - if (root == NULL) - goto error; - - ret = 0; - - /* coverity[copy_paste_error] */ - for (_for_i = root, node = root->u.s.car; _for_i->kind == SEXPR_CONS; - _for_i = _for_i->u.s.cdr, node = _for_i->u.s.car) { - if (node->kind != SEXPR_VALUE) - continue; - id = xenDaemonDomainLookupByName_ids(conn, node->u.value, NULL); - if (id >= 0) - ids[ret++] = (int) id; - if (ret >= maxids) - break; - } - -error: - sexpr_free(root); - return ret; -} - -/** - * xenDaemonNumOfDomains: - * @conn: pointer to the hypervisor connection - * - * Provides the number of active domains. - * - * Returns the number of domain found or -1 in case of error - */ -int -xenDaemonNumOfDomains(virConnectPtr conn) -{ - struct sexpr *root = NULL; - int ret = -1; - struct sexpr *_for_i, *node; - - root = sexpr_get(conn, "/xend/domain"); - if (root == NULL) - goto error; - - ret = 0; - - /* coverity[copy_paste_error] */ - for (_for_i = root, node = root->u.s.car; _for_i->kind == SEXPR_CONS; - _for_i = _for_i->u.s.cdr, node = _for_i->u.s.car) { - if (node->kind != SEXPR_VALUE) - continue; - ret++; - } - -error: - sexpr_free(root); - return ret; -} - - /** * xenDaemonLookupByID: * @conn: pointer to the hypervisor connection diff --git a/src/xen/xend_internal.h b/src/xen/xend_internal.h index 41d834196b..f6760a2f1c 100644 --- a/src/xen/xend_internal.h +++ b/src/xen/xend_internal.h @@ -161,7 +161,5 @@ int xenDaemonDomainMigratePrepare (virConnectPtr dconn, char **cookie, int *cook int xenDaemonDomainMigratePerform (virDomainPtr domain, const char *cookie, int cookielen, 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 xenDaemonListDomains(virConnectPtr conn, int *ids, int maxids); -int xenDaemonNumOfDomains(virConnectPtr conn); #endif /* __XEND_INTERNAL_H_ */ diff --git a/src/xen/xs_internal.c b/src/xen/xs_internal.c index eecdcae614..dbb4ae4eda 100644 --- a/src/xen/xs_internal.c +++ b/src/xen/xs_internal.c @@ -496,11 +496,6 @@ xenStoreNumOfDomains(virConnectPtr conn) long id; xenUnifiedPrivatePtr priv = conn->privateData; - if (priv->xshandle == NULL) { - virReportError(VIR_ERR_INVALID_ARG, __FUNCTION__); - return -1; - } - idlist = xs_directory(priv->xshandle, 0, "/local/domain", &num); if (idlist) { for (i = 0; i < num; i++) { @@ -542,9 +537,6 @@ xenStoreDoListDomains(virConnectPtr conn, int ret = -1; long id; - if (priv->xshandle == NULL) - goto out; - idlist = xs_directory(priv->xshandle, 0, "/local/domain", &num); if (idlist == NULL) goto out;