Daniel P. Berrange wrote: > From: "Daniel P. Berrange" <berra...@redhat.com> > > The XenStore driver is mandatory, so it can be used unconditonally > for the xenUnifiedConnectListDomains & xenUnifiedConnectNumOfDomains > drivers. Delete the unused XenD and Hypervisor driver code for > listing / counting domains > > Signed-off-by: Daniel P. Berrange <berra...@redhat.com> > --- > src/xen/xen_driver.c | 46 +-------------------- > src/xen/xen_hypervisor.c | 101 > ----------------------------------------------- > src/xen/xen_hypervisor.h | 4 -- > src/xen/xend_internal.c | 81 ------------------------------------- > src/xen/xend_internal.h | 2 - > src/xen/xs_internal.c | 8 ---- > 6 files changed, 2 insertions(+), 240 deletions(-) > > diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c > index b6cf6ca..25fb7bb 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); >
Probably not likely, but what if xenStoreListDomains() failed, e.g. xshandle somehow became stale? The existing code would try the other drivers if xenstore one failed. Regards, Jim > } > > 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 012cb0e..2068a8a 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 86dca88..949311d 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 eb11408..952eb3f 100644 > --- a/src/xen/xend_internal.c > +++ b/src/xen/xend_internal.c > @@ -1863,87 +1863,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 > * @id: the domain ID number > diff --git a/src/xen/xend_internal.h b/src/xen/xend_internal.h > index 41d8341..f6760a2 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 eecdcae..dbb4ae4 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; > -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list