[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 6/8] libxl: introduce libxl__alloc_vdev
On Fri, 4 May 2012, Ian Campbell wrote: > On Fri, 2012-05-04 at 12:13 +0100, Stefano Stabellini wrote: > > Introduce libxl__alloc_vdev: find a spare virtual block device in the > > domain passed as argument. > > > > Changes in v5: > > - remove domid paramter to libxl__alloc_vdev (assume > > LIBXL_TOOLSTACK_DOMID); > > - remove scaling limit from libxl__alloc_vdev. > > > > Changes in v4: > > - rename libxl__devid_to_vdev to libxl__devid_to_localdev; > > - introduce upper bound for encode_disk_name; > > - better error handling; > > > > Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> > > --- > > tools/libxl/libxl_internal.c | 31 ++++++++++++++++++++++++++++ > > tools/libxl/libxl_internal.h | 4 +++ > > tools/libxl/libxl_linux.c | 45 > > ++++++++++++++++++++++++++++++++++++++++++ > > tools/libxl/libxl_netbsd.c | 6 +++++ > > 4 files changed, 86 insertions(+), 0 deletions(-) > > > > diff --git a/tools/libxl/libxl_internal.c b/tools/libxl/libxl_internal.c > > index bd5ebb3..7a1e017 100644 > > --- a/tools/libxl/libxl_internal.c > > +++ b/tools/libxl/libxl_internal.c > > @@ -480,6 +480,37 @@ out: > > return rc; > > } > > > > +/* libxl__alloc_vdev only works on the local domain, that is the domain > > + * where the toolstack is running */ > > +static char * libxl__alloc_vdev(libxl__gc *gc, const char *blkdev_start, > > + xs_transaction_t t) > > +{ > > + int devid = 0, disk = 0, part = 0; > > + char *vdev = NULL; > > + char *dompath = libxl__xs_get_dompath(gc, LIBXL_TOOLSTACK_DOMID); > > + > > + libxl__device_disk_dev_number(blkdev_start, &disk, &part); > > If you specify the default blkdev_start in xl as d0 instead of xvda > doesn't at least this bit magically become portable to BSD etc too? It cannot work on BSD for other reason, see below. In any case blkdev_start can be anything that libxl__device_disk_dev_number can parse, so d0p0 works too. > Or couldn't it actually be an int and save you parsing at all? Yes, it could. But isn't "xvda" much more intuitive? > > + if (part != 0) { > > + LOG(ERROR, "blkdev_start is invalid"); > > + return NULL; > > + } > > + > > + do { > > + vdev = GCSPRINTF("d%dp0", disk); > > + devid = libxl__device_disk_dev_number(vdev, NULL, NULL); > > libxl__device_disk_dev_number does the right thing with "d<N>" (i.e. > without the hardcoded "p0"), I think. In my tests it doesn't work properly using just d<N>. > I'd be tempted to inline the GCSPRINTF in the arg and do away with vdev > since you don't use it again. OK > > diff --git a/tools/libxl/libxl_netbsd.c b/tools/libxl/libxl_netbsd.c > > index 9e0ed6d..dbf5f71 100644 > > --- a/tools/libxl/libxl_netbsd.c > > +++ b/tools/libxl/libxl_netbsd.c > > Aha, here's where we need a BSD contribution. CC someone? There is no working gntdev or QDISK on BSD at the moment. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |