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

Re: [Xen-devel] [PATCH v3 1/7] libxl: Add ERROR_DOMAIN_NOTFOUND for libxl_domain_info when it cannot find the domain



Please remember to CC all the relevant maintainers, e.g. Wei and Ian in
addition to me. MAINTAINERS is helpful here.

On Mon, 2015-03-23 at 14:20 -0400, Konrad Rzeszutek Wilk wrote:
> And use that for all of its callers in the tree.
> 
> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>

Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

although I started a conversation in response to a similar patch from
Ian J regarding the semantics (I cc-d you).

> ---
>  tools/libxl/libxl.c         | 19 +++++++++++--------
>  tools/libxl/libxl.h         |  9 ++++++++-
>  tools/libxl/libxl_types.idl |  1 +
>  tools/libxl/xl_cmdimpl.c    |  4 ++--
>  4 files changed, 22 insertions(+), 11 deletions(-)
> 
> diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
> index 46de4f7..0b57bae 100644
> --- a/tools/libxl/libxl.c
> +++ b/tools/libxl/libxl.c
> @@ -455,7 +455,7 @@ int libxl__domain_rename(libxl__gc *gc, uint32_t domid,
>      /* update /vm/<uuid>/name */
>      rc = libxl_domain_info(ctx, &info, domid);
>      if (rc)
> -        goto x_fail;
> +        goto x_rc;
>  
>      uuid = GCSPRINTF(LIBXL_UUID_FMT, LIBXL_UUID_BYTES(info.uuid));
>      vm_name_path = GCSPRINTF("/vm/%s/name", uuid);
> @@ -698,7 +698,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_DOMAIN_NOTFOUND;
>  
>      if (info_r)
>          xcinfo2xlinfo(ctx, &xcinfo, info_r);
> @@ -1577,7 +1577,7 @@ void libxl__destroy_domid(libxl__egc *egc, 
> libxl__destroy_domid_state *dis)
>      switch(rc) {
>      case 0:
>          break;
> -    case ERROR_INVAL:
> +    case ERROR_DOMAIN_NOTFOUND:
>          LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "non-existant domain %d", domid);
>      default:
>          goto out;
> @@ -5449,14 +5449,16 @@ 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;
>      }
> +    rc = ERROR_FAIL;
>      if (!(dompath = libxl__xs_get_dompath(gc, domid)))
>          goto out;
>  
> @@ -5480,14 +5482,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 6bc75c5..1cf5699 100644
> --- a/tools/libxl/libxl.h
> +++ b/tools/libxl/libxl.h
> @@ -179,6 +179,11 @@
>  #define LIBXL_HAVE_BUILDINFO_HVM_MMIO_HOLE_MEMKB 1
>  
>  /*
> + * libxl_domain_info returns ERROR_DOMAIN_NOTFOUND if the domain
> + * is not present, instead of ERROR_INVAL.
> + */
> +#define LIBXL_HAVE_ERROR_DOMAIN_NOTFOUND 1
> +/*
>   * libxl ABI compatibility
>   *
>   * The only guarantee which libxl makes regarding ABI compatibility
> @@ -1104,7 +1109,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 existence.
> + * Returns ERROR_DOMAIN_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 0866433..117b61d 100644
> --- a/tools/libxl/libxl_types.idl
> +++ b/tools/libxl/libxl_types.idl
> @@ -64,6 +64,7 @@ libxl_error = Enumeration("error", [
>      (-18, "REMUS_DEVOPS_DOES_NOT_MATCH"),
>      (-19, "REMUS_DEVICE_NOT_SUPPORTED"),
>      (-20, "VNUMA_CONFIG_INVALID"),
> +    (-21, "DOMAIN_NOTFOUND"),
>      ], value_namespace = "")
>  
>  libxl_domain_type = Enumeration("domain_type", [
> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
> index 394b55d..1c07ac6 100644
> --- a/tools/libxl/xl_cmdimpl.c
> +++ b/tools/libxl/xl_cmdimpl.c
> @@ -4736,7 +4736,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_DOMAIN_NOTFOUND) {
>              fprintf(stderr, "Error: Domain \'%s\' does not exist.\n",
>                  argv[optind]);
>              return -rc;
> @@ -5507,7 +5507,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_DOMAIN_NOTFOUND) {
>              fprintf(stderr, "Error: Domain \'%s\' does not exist.\n",
>                  argv[optind]);
>              return -rc;



_______________________________________________
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®.