|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 1/5] libxl: Add ERROR_NOTFOUND for libxl_domain_info when it cannot find the domain
And use that for all of its callers in the tree.
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
---
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@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |