[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |