[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH RFC 3/9] libxl: introduce specific xenstore error codes



Signed-off-by: Rob Hoes <rob.hoes@xxxxxxxxxx>
---
 tools/libxl/libxl_types.idl |  8 ++++++++
 tools/libxl/libxl_xshelp.c  | 14 +++++++-------
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
index 6dc18fa..e9b3477 100644
--- a/tools/libxl/libxl_types.idl
+++ b/tools/libxl/libxl_types.idl
@@ -106,6 +106,14 @@ libxl_error = Enumeration("error", [
     
     # Requested domain was not found
     (-21, "DOMAIN_NOTFOUND"),
+    
+    # Xenstore errors
+    (ENUM_PREV, "XS_CONNECT"),
+    (ENUM_PREV, "XS_READ"),
+    (ENUM_PREV, "XS_WRITE"),
+    (ENUM_PREV, "XS_TRANS_START"),
+    (ENUM_PREV, "XS_TRANS_COMMIT"),
+    (ENUM_PREV, "XS_REMOVE"),
     ], value_namespace = "")
 
 libxl_domain_type = Enumeration("domain_type", [
diff --git a/tools/libxl/libxl_xshelp.c b/tools/libxl/libxl_xshelp.c
index d7eaa66..e634ee5 100644
--- a/tools/libxl/libxl_xshelp.c
+++ b/tools/libxl/libxl_xshelp.c
@@ -174,7 +174,7 @@ int libxl__xs_read_checked(libxl__gc *gc, xs_transaction_t 
t,
     if (!result) {
         if (errno != ENOENT) {
             LOGE(ERROR, "xenstore read failed: `%s'", path);
-            return ERROR_FAIL;
+            return ERROR_XS_READ;
         }
     }
     *result_out = result;
@@ -187,7 +187,7 @@ int libxl__xs_write_checked(libxl__gc *gc, xs_transaction_t 
t,
     size_t length = strlen(string);
     if (!xs_write(CTX->xsh, t, path, string, length)) {
         LOGE(ERROR, "xenstore write failed: `%s' = `%s'", path, string);
-        return ERROR_FAIL;
+        return ERROR_XS_WRITE;
     }
     return 0;
 }
@@ -199,7 +199,7 @@ int libxl__xs_rm_checked(libxl__gc *gc, xs_transaction_t t, 
const char *path)
             return 0;
 
         LOGE(ERROR, "xenstore rm failed: `%s'", path);
-        return ERROR_FAIL;
+        return ERROR_XS_REMOVE;
     }
     return 0;
 }
@@ -210,7 +210,7 @@ int libxl__xs_transaction_start(libxl__gc *gc, 
xs_transaction_t *t)
     *t = xs_transaction_start(CTX->xsh);
     if (!*t) {
         LOGE(ERROR, "could not create xenstore transaction");
-        return ERROR_FAIL;
+        return ERROR_XS_TRANS_START;
     }
     return 0;
 }
@@ -225,7 +225,7 @@ int libxl__xs_transaction_commit(libxl__gc *gc, 
xs_transaction_t *t)
             return +1;
 
         LOGE(ERROR, "could not commit xenstore transaction");
-        return ERROR_FAIL;
+        return ERROR_XS_TRANS_COMMIT;
     }
 
     *t = 0;
@@ -257,7 +257,7 @@ int libxl__xs_path_cleanup(libxl__gc *gc, xs_transaction_t 
t,
     if (!xs_rm(CTX->xsh, t, path)) {
         if (errno != ENOENT)
             LOGE(DEBUG, "unable to remove path %s", path);
-        rc = ERROR_FAIL;
+        rc = ERROR_XS_REMOVE;
         goto out;
     }
 
@@ -274,7 +274,7 @@ int libxl__xs_path_cleanup(libxl__gc *gc, xs_transaction_t 
t,
         if (!xs_rm(CTX->xsh, t, path)) {
             if (errno != ENOENT)
                 LOGE(DEBUG, "unable to remove path %s", path);
-            rc = ERROR_FAIL;
+            rc = ERROR_XS_REMOVE;
             goto out;
         }
     }
-- 
2.4.1


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.