[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] libxl: remove the xl list limit of 1024 domains
commit ff1301576ecc573c738ffe065ac779c349a36244 Author: Juergen Gross <jgross@xxxxxxxx> AuthorDate: Mon Jan 4 15:55:51 2016 +0100 Commit: Ian Campbell <ian.campbell@xxxxxxxxxx> CommitDate: Fri Jan 15 15:35:26 2016 +0000 libxl: remove the xl list limit of 1024 domains xl list is currently limited to 1024 domains. Remove the limit. Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Reviewed-by: Wei Liu <wei.liu2@xxxxxxxxxx> --- tools/libxl/libxl.c | 25 ++++++++++++------------- 1 files changed, 12 insertions(+), 13 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 9207621..86b08d9 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -649,31 +649,30 @@ static void xcinfo2xlinfo(libxl_ctx *ctx, libxl_dominfo * libxl_list_domain(libxl_ctx *ctx, int *nb_domain_out) { - libxl_dominfo *ptr; + libxl_dominfo *ptr = NULL; int i, ret; xc_domaininfo_t info[1024]; - int size = 1024; + int size = 0; + uint32_t domid = 0; GC_INIT(ctx); - ptr = calloc(size, sizeof(libxl_dominfo)); - if (!ptr) { - LOGE(ERROR, "allocating domain info"); - GC_FREE; - return NULL; + while ((ret = xc_domain_getinfolist(ctx->xch, domid, 1024, info)) > 0) { + ptr = libxl__realloc(NOGC, ptr, (size + ret) * sizeof(libxl_dominfo)); + for (i = 0; i < ret; i++) { + xcinfo2xlinfo(ctx, &info[i], &ptr[size + i]); + } + domid = info[ret - 1].domain + 1; + size += ret; } - ret = xc_domain_getinfolist(ctx->xch, 0, 1024, info); - if (ret<0) { + if (ret < 0) { LOGE(ERROR, "getting domain info list"); free(ptr); GC_FREE; return NULL; } - for (i = 0; i < ret; i++) { - xcinfo2xlinfo(ctx, &info[i], &ptr[i]); - } - *nb_domain_out = ret; + *nb_domain_out = size; GC_FREE; return ptr; } -- 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 |