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

Re: [Xen-devel] [PATCH 2 of 9 v2] libxl: add support for image files for NetBSD



On Fri, 2011-11-18 at 11:59 +0000, Roger Pau Monne wrote:
> # HG changeset patch
> # User Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>
> # Date 1317386335 -7200
> # Node ID 9e8abd626484f82a95d0edc07834ae287bc9467a
> # Parent  23578c9942bcc8767adc4e435bb1fd1cd89f5e18
> libxl: add support for image files for NetBSD
> 
> Created a helper function to detect if the OS is capable of using
> image files as phy backends. Create two OS specific files, and
> changed the Makefile to choose the correct one at compile time.
> 
> Signed-off-by: Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>
> 
> diff -r 23578c9942bc -r 9e8abd626484 tools/libxl/Makefile
> --- a/tools/libxl/Makefile    Fri Sep 30 14:38:55 2011 +0200
> +++ b/tools/libxl/Makefile    Fri Sep 30 14:38:55 2011 +0200
> @@ -32,6 +32,12 @@ endif
>  LIBXL_OBJS-$(CONFIG_X86) += libxl_cpuid.o
>  LIBXL_OBJS-$(CONFIG_IA64) += libxl_nocpuid.o
>  
> +ifeq ($(CONFIG_NetBSD),y)
> +LIBXL_OBJS-y += libxl_phybackend.o
> +else
> +LIBXL_OBJS-y += libxl_nophybackend.o

phy vs nophy don't really make sense to me here, since in both cases the
content relates to the phy backend.

Perhaps we need libxl_$(OS).c to contain os specific stuff?

> +endif
> +
>  LIBXL_LIBS += -lyajl
>  
>  LIBXL_OBJS = flexarray.o libxl.o libxl_create.o libxl_dm.o libxl_pci.o \
> diff -r 23578c9942bc -r 9e8abd626484 tools/libxl/libxl_device.c
> --- a/tools/libxl/libxl_device.c      Fri Sep 30 14:38:55 2011 +0200
> +++ b/tools/libxl/libxl_device.c      Fri Sep 30 14:38:55 2011 +0200
> @@ -138,15 +138,14 @@ static int disk_try_backend(disk_try_bac
>                a->disk->format == LIBXL_DISK_FORMAT_EMPTY)) {
>              goto bad_format;
>          }
> -        if (a->disk->format != LIBXL_DISK_FORMAT_EMPTY &&
> -            !S_ISBLK(a->stab.st_mode)) {
> -            LIBXL__LOG(ctx, LIBXL__LOG_DEBUG, "Disk vdev=%s, backend phy"
> -                       " unsuitable as phys path not a block device",
> -                       a->disk->vdev);
> -            return 0;
> -        }
>  
> -        return backend;
> +        if (libxl__try_phy_backend(a->stab.st_mode))
> +            return backend;
> +
> +        LIBXL__LOG(ctx, LIBXL__LOG_DEBUG, "Disk vdev=%s, backend phy"
> +                   " unsuitable as phys path not a block device",
> +                   a->disk->vdev);
> +        return 0;
>  
>      case LIBXL_DISK_BACKEND_TAP:
>          if (!libxl__blktap_enabled(a->gc)) {
> diff -r 23578c9942bc -r 9e8abd626484 tools/libxl/libxl_internal.h
> --- a/tools/libxl/libxl_internal.h    Fri Sep 30 14:38:55 2011 +0200
> +++ b/tools/libxl/libxl_internal.h    Fri Sep 30 14:38:55 2011 +0200
> @@ -252,6 +252,15 @@ _hidden int libxl__device_destroy(libxl_
>  _hidden int libxl__devices_destroy(libxl__gc *gc, uint32_t domid, int force);
>  _hidden int libxl__wait_for_backend(libxl__gc *gc, char *be_path, char 
> *state);
>  
> +/*
> + * libxl__try_phy_backend - Check if there's support for the passed
> + * type of file using the PHY backend
> + * st_mode: mode_t of the file, as returned by stat function
> + *
> + * Returns 0 on success, and < 0 on error.
> + */
> +_hidden int libxl__try_phy_backend(mode_t st_mode);
> +
>  /* from libxl_pci */
>  
>  _hidden int libxl__device_pci_add(libxl__gc *gc, uint32_t domid, 
> libxl_device_pci *pcidev, int starting);
> diff -r 23578c9942bc -r 9e8abd626484 tools/libxl/libxl_nophybackend.c
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/tools/libxl/libxl_nophybackend.c        Fri Sep 30 14:38:55 2011 +0200
> @@ -0,0 +1,27 @@
> +/*
> + * Copyright (C) 2011
> + * Author Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU Lesser General Public License as published
> + * by the Free Software Foundation; version 2.1 only. with the special
> + * exception on linking described in file LICENSE.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU Lesser General Public License for more details.
> + */
> + 
> +#include <sys/stat.h>
> +
> +#include "libxl_internal.h"
> + 
> +int libxl__try_phy_backend(mode_t st_mode)
> +{
> +    if (!S_ISBLK(st_mode)) {
> +        return 0;
> +    }
> +
> +    return 1;
> +}
> diff -r 23578c9942bc -r 9e8abd626484 tools/libxl/libxl_phybackend.c
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/tools/libxl/libxl_phybackend.c  Fri Sep 30 14:38:55 2011 +0200
> @@ -0,0 +1,26 @@
> +/*
> + * Copyright (C) 2011
> + * Author Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU Lesser General Public License as published
> + * by the Free Software Foundation; version 2.1 only. with the special
> + * exception on linking described in file LICENSE.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU Lesser General Public License for more details.
> + */
> + 
> +#include <sys/stat.h>
> +
> +#include "libxl_internal.h"
> + 
> +int libxl__try_phy_backend(mode_t st_mode)
> +{
> +    if (S_ISREG(st_mode) || S_ISBLK(st_mode))
> +        return 1;
> +
> +    return 0;
> +}
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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