[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] libxl: base libxl_list_vm() on libxl_list_domain()
commit b4637669c4758d1e8c65eb5bec711ff2cf183641 Author: Juergen Gross <jgross@xxxxxxxx> AuthorDate: Mon Jan 4 15:55:52 2016 +0100 Commit: Ian Campbell <ian.campbell@xxxxxxxxxx> CommitDate: Fri Jan 15 15:35:26 2016 +0000 libxl: base libxl_list_vm() on libxl_list_domain() libxl_list_vm() is calling xc_domain_getinfolist() today with a limit of 1024 domains. To avoid open coding a loop around xc_domain_getinfolist() to avoid the 1024 domain limit just use libxl_list_domain() instead. Suggested-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Reviewed-by: Wei Liu <wei.liu2@xxxxxxxxxx> --- tools/libxl/libxl.c | 21 ++++++++++----------- 1 files changed, 10 insertions(+), 11 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 86b08d9..abb2845 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -799,32 +799,31 @@ out: libxl_vminfo * libxl_list_vm(libxl_ctx *ctx, int *nb_vm_out) { GC_INIT(ctx); + libxl_dominfo *info; libxl_vminfo *ptr = NULL; - int idx, i, ret; - xc_domaininfo_t info[1024]; + int idx, i, n_doms; - ret = xc_domain_getinfolist(ctx->xch, 1, ARRAY_SIZE(info), info); - if (ret < 0) { - LOGE(ERROR, "getting domain info list"); + info = libxl_list_domain(ctx, &n_doms); + if (!info) goto out; - } /* * Always make sure to allocate at least one element; if we don't and we * request zero, libxl__calloc (might) think its internal call to calloc * has failed (if it returns null), if so it would kill our process. */ - ptr = libxl__calloc(NOGC, ret ? ret : 1, sizeof(libxl_vminfo)); + ptr = libxl__calloc(NOGC, n_doms ? n_doms : 1, sizeof(libxl_vminfo)); - for (idx = i = 0; i < ret; i++) { - if (libxl_is_stubdom(ctx, info[i].domain, NULL)) + for (idx = i = 0; i < n_doms; i++) { + if (libxl_is_stubdom(ctx, info[i].domid, NULL)) continue; - memcpy(&(ptr[idx].uuid), info[i].handle, sizeof(xen_domain_handle_t)); - ptr[idx].domid = info[i].domain; + ptr[idx].uuid = info[i].uuid; + ptr[idx].domid = info[i].domid; idx++; } *nb_vm_out = idx; + libxl_dominfo_list_free(info, n_doms); out: GC_FREE; -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |