And use that for all of its callers in the tree. Signed-off-by: Konrad Rzeszutek Wilk <konrad.w...@oracle.com> --- tools/libxl/libxl.c | 18 +++++++++++------- tools/libxl/libxl.h | 4 +++- tools/libxl/libxl_types.idl | 1 + tools/libxl/xl_cmdimpl.c | 7 ++++--- 4 files changed, 19 insertions(+), 11 deletions(-)
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 94b4d59..691efaf 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -454,6 +454,8 @@ int libxl__domain_rename(libxl__gc *gc, uint32_t domid, /* update /vm/<uuid>/name */ rc = libxl_domain_info(ctx, &info, domid); + if (rc == ERROR_NOTFOUND) + goto x_rc; if (rc) goto x_fail; @@ -698,7 +700,7 @@ int libxl_domain_info(libxl_ctx *ctx, libxl_dominfo *info_r, LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "getting domain info list"); return ERROR_FAIL; } - if (ret==0 || xcinfo.domain != domid) return ERROR_INVAL; + if (ret==0 || xcinfo.domain != domid) return ERROR_NOTFOUND; if (info_r) xcinfo2xlinfo(ctx, &xcinfo, info_r); @@ -1572,7 +1574,7 @@ void libxl__destroy_domid(libxl__egc *egc, libxl__destroy_domid_state *dis) switch(rc) { case 0: break; - case ERROR_INVAL: + case ERROR_NOTFOUND: LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "non-existant domain %d", domid); default: goto out; @@ -5415,11 +5417,12 @@ static int libxl__set_vcpuonline_xenstore(libxl__gc *gc, uint32_t domid, libxl_dominfo info; char *dompath; xs_transaction_t t; - int i, rc = ERROR_FAIL; + int i, rc; libxl_dominfo_init(&info); - if (libxl_domain_info(CTX, &info, domid) < 0) { + rc = libxl_domain_info(CTX, &info, domid); + if (rc < 0) { LOGE(ERROR, "getting domain info list"); goto out; } @@ -5446,14 +5449,15 @@ static int libxl__set_vcpuonline_qmp(libxl__gc *gc, uint32_t domid, libxl_bitmap *cpumap) { libxl_dominfo info; - int i; + int i, rc; libxl_dominfo_init(&info); - if (libxl_domain_info(CTX, &info, domid) < 0) { + rc = libxl_domain_info(CTX, &info, domid); + if (rc < 0) { LOGE(ERROR, "getting domain info list"); libxl_dominfo_dispose(&info); - return ERROR_FAIL; + return rc; } for (i = 0; i <= info.vcpu_max_id; i++) { if (libxl_bitmap_test(cpumap, i)) { diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index 5eec092..5164371 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -1088,7 +1088,9 @@ int libxl_console_get_tty(libxl_ctx *ctx, uint32_t domid, int cons_num, */ int libxl_primary_console_get_tty(libxl_ctx *ctx, uint32_t domid_vm, char **path); -/* May be called with info_r == NULL to check for domain's existance */ +/* May be called with info_r == NULL to check for domain's existance. + * Returns ERROR_NOTFOUND if domain does not exist (used to return + * ERROR_INVAL for this scenario). */ int libxl_domain_info(libxl_ctx*, libxl_dominfo *info_r, uint32_t domid); diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl index 47af340..69a91cc 100644 --- a/tools/libxl/libxl_types.idl +++ b/tools/libxl/libxl_types.idl @@ -63,6 +63,7 @@ libxl_error = Enumeration("error", [ (-17, "DEVICE_EXISTS"), (-18, "REMUS_DEVOPS_DOES_NOT_MATCH"), (-19, "REMUS_DEVICE_NOT_SUPPORTED"), + (-20, "NOTFOUND"), ], value_namespace = "") libxl_domain_type = Enumeration("domain_type", [ diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 04faf98..2d7145f 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -4532,7 +4532,7 @@ int main_list(int argc, char **argv) } else if (optind == argc-1) { uint32_t domid = find_domain(argv[optind]); rc = libxl_domain_info(ctx, &info_buf, domid); - if (rc == ERROR_INVAL) { + if (rc == ERROR_NOTFOUND) { fprintf(stderr, "Error: Domain \'%s\' does not exist.\n", argv[optind]); return -rc; @@ -5302,7 +5302,7 @@ int main_sharing(int argc, char **argv) } else if (optind == argc-1) { uint32_t domid = find_domain(argv[optind]); rc = libxl_domain_info(ctx, &info_buf, domid); - if (rc == ERROR_INVAL) { + if (rc == ERROR_NOTFOUND) { fprintf(stderr, "Error: Domain \'%s\' does not exist.\n", argv[optind]); return -rc; @@ -7495,7 +7495,8 @@ int main_cpupoolnumasplit(int argc, char **argv) goto out; } for (c = 0; c < 10; c++) { - if (libxl_domain_info(ctx, &info, 0)) { + ret = -libxl_domain_info(ctx, &info, 0); + if (ret) { fprintf(stderr, "error on getting info for Domain-0\n"); goto out; } -- 2.1.0 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel