From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
To: xen-devel@lists.xensource.com
Cc: Ian.Jackson@eu.citrix.com, Ian.Campbell@citrix.com,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Subject: [PATCH v3 4/7] xl/libxl: add a blkdev_start parameter
Date: Mon, 16 Apr 2012 19:33:07 +0100 [thread overview]
Message-ID: <1334601190-14187-4-git-send-email-stefano.stabellini@eu.citrix.com> (raw)
In-Reply-To: <alpine.DEB.2.00.1204161848030.26786@kaball-desktop>
Introduce a blkdev_start in xl.conf and pass it to
libxl_domain_create_* and all the way through libxl_run_bootloader and
libxl__device_disk_local_attach.
blkdev_start specifies the first block device to be used for temporary
block device allocations by the toolstack.
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
---
tools/examples/xl.conf | 3 +++
tools/libxl/libxl.h | 10 +++++++---
tools/libxl/libxl_bootloader.c | 6 ++++--
tools/libxl/libxl_create.c | 18 ++++++++++++------
tools/libxl/libxl_internal.c | 3 ++-
tools/libxl/libxl_internal.h | 3 ++-
tools/libxl/xl.c | 3 +++
tools/libxl/xl.h | 1 +
tools/libxl/xl_cmdimpl.c | 5 +++--
9 files changed, 37 insertions(+), 15 deletions(-)
diff --git a/tools/examples/xl.conf b/tools/examples/xl.conf
index 56d3b3b..ebf057c 100644
--- a/tools/examples/xl.conf
+++ b/tools/examples/xl.conf
@@ -12,3 +12,6 @@
# default output format used by "xl list -l"
#output_format="json"
+
+# first block device to be used for temporary VM disk mounts
+#blkdev_start="xvda"
diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
index 779c8dd..151a6e0 100644
--- a/tools/libxl/libxl.h
+++ b/tools/libxl/libxl.h
@@ -464,8 +464,11 @@ int libxl_ctx_free(libxl_ctx *ctx /* 0 is OK */);
/* domain related functions */
typedef int (*libxl_console_ready)(libxl_ctx *ctx, uint32_t domid, void *priv);
-int libxl_domain_create_new(libxl_ctx *ctx, libxl_domain_config *d_config, libxl_console_ready cb, void *priv, uint32_t *domid);
-int libxl_domain_create_restore(libxl_ctx *ctx, libxl_domain_config *d_config, libxl_console_ready cb, void *priv, uint32_t *domid, int restore_fd);
+int libxl_domain_create_new(libxl_ctx *ctx, libxl_domain_config *d_config,
+ libxl_console_ready cb, void *priv, uint32_t *domid, char* blkdev_start);
+int libxl_domain_create_restore(libxl_ctx *ctx, libxl_domain_config *d_config,
+ libxl_console_ready cb, void *priv, uint32_t *domid, int restore_fd,
+ char *blkdev_start);
void libxl_domain_config_dispose(libxl_domain_config *d_config);
int libxl_domain_suspend(libxl_ctx *ctx, libxl_domain_suspend_info *info,
uint32_t domid, int fd);
@@ -493,7 +496,8 @@ int libxl_get_max_cpus(libxl_ctx *ctx);
int libxl_run_bootloader(libxl_ctx *ctx,
libxl_domain_build_info *info,
libxl_device_disk *disk,
- uint32_t domid);
+ uint32_t domid,
+ char *blkdev_start);
/* 0 means ERROR_ENOMEM, which we have logged */
diff --git a/tools/libxl/libxl_bootloader.c b/tools/libxl/libxl_bootloader.c
index 429253d..fe56615 100644
--- a/tools/libxl/libxl_bootloader.c
+++ b/tools/libxl/libxl_bootloader.c
@@ -323,7 +323,8 @@ static void parse_bootloader_result(libxl__gc *gc,
int libxl_run_bootloader(libxl_ctx *ctx,
libxl_domain_build_info *info,
libxl_device_disk *disk,
- uint32_t domid)
+ uint32_t domid,
+ char *blkdev_start)
{
GC_INIT(ctx);
int ret, rc = 0;
@@ -387,7 +388,8 @@ int libxl_run_bootloader(libxl_ctx *ctx,
goto out_close;
}
- diskpath = libxl__device_disk_local_attach(gc, disk, &tmpdisk);
+ diskpath = libxl__device_disk_local_attach(gc, disk, &tmpdisk,
+ blkdev_start);
if (!diskpath) {
goto out_close;
}
diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
index 6029445..5064bc3 100644
--- a/tools/libxl/libxl_create.c
+++ b/tools/libxl/libxl_create.c
@@ -544,7 +544,8 @@ static int store_libxl_entry(libxl__gc *gc, uint32_t domid,
static int do_domain_create(libxl__gc *gc, libxl_domain_config *d_config,
libxl_console_ready cb, void *priv,
- uint32_t *domid_out, int restore_fd)
+ uint32_t *domid_out, int restore_fd,
+ char* blkdev_start)
{
libxl_ctx *ctx = libxl__gc_owner(gc);
libxl__spawner_starting *dm_starting = 0;
@@ -581,7 +582,9 @@ static int do_domain_create(libxl__gc *gc, libxl_domain_config *d_config,
}
if ( restore_fd < 0 ) {
- ret = libxl_run_bootloader(ctx, &d_config->b_info, d_config->num_disks > 0 ? &d_config->disks[0] : NULL, domid);
+ ret = libxl_run_bootloader(ctx, &d_config->b_info,
+ d_config->num_disks > 0 ? &d_config->disks[0] : NULL,
+ domid, blkdev_start);
if (ret) {
LIBXL__LOG(ctx, LIBXL__LOG_ERROR,
"failed to run bootloader: %d", ret);
@@ -735,21 +738,24 @@ error_out:
}
int libxl_domain_create_new(libxl_ctx *ctx, libxl_domain_config *d_config,
- libxl_console_ready cb, void *priv, uint32_t *domid)
+ libxl_console_ready cb, void *priv, uint32_t *domid,
+ char* blkdev_start)
{
GC_INIT(ctx);
int rc;
- rc = do_domain_create(gc, d_config, cb, priv, domid, -1);
+ rc = do_domain_create(gc, d_config, cb, priv, domid, -1, blkdev_start);
GC_FREE;
return rc;
}
int libxl_domain_create_restore(libxl_ctx *ctx, libxl_domain_config *d_config,
- libxl_console_ready cb, void *priv, uint32_t *domid, int restore_fd)
+ libxl_console_ready cb, void *priv, uint32_t *domid,
+ int restore_fd, char *blkdev_start)
{
GC_INIT(ctx);
int rc;
- rc = do_domain_create(gc, d_config, cb, priv, domid, restore_fd);
+ rc = do_domain_create(gc, d_config, cb, priv, domid, restore_fd,
+ blkdev_start);
GC_FREE;
return rc;
}
diff --git a/tools/libxl/libxl_internal.c b/tools/libxl/libxl_internal.c
index 9ecfcc7..6131ec5 100644
--- a/tools/libxl/libxl_internal.c
+++ b/tools/libxl/libxl_internal.c
@@ -482,7 +482,8 @@ out:
_hidden char * libxl__device_disk_local_attach(libxl__gc *gc,
const libxl_device_disk *disk,
- libxl_device_disk **new_disk)
+ libxl_device_disk **new_disk,
+ char *blkdev_start)
{
libxl_ctx *ctx = gc->owner;
char *dev = NULL;
diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
index c171f24..aab8300 100644
--- a/tools/libxl/libxl_internal.h
+++ b/tools/libxl/libxl_internal.h
@@ -1013,7 +1013,8 @@ _hidden int libxl__device_disk_add_t(libxl__gc *gc, uint32_t domid,
*/
_hidden char * libxl__device_disk_local_attach(libxl__gc *gc,
const libxl_device_disk *disk,
- libxl_device_disk **new_disk);
+ libxl_device_disk **new_disk,
+ char *blkdev_start);
_hidden int libxl__device_disk_local_detach(libxl__gc *gc,
libxl_device_disk *disk);
diff --git a/tools/libxl/xl.c b/tools/libxl/xl.c
index a6ffd25..6a735e9 100644
--- a/tools/libxl/xl.c
+++ b/tools/libxl/xl.c
@@ -35,6 +35,7 @@
xentoollog_logger_stdiostream *logger;
int dryrun_only;
int autoballoon = 1;
+char *blkdev_start = "xvda";
char *lockfile;
char *default_vifscript = NULL;
char *default_bridge = NULL;
@@ -91,6 +92,8 @@ static void parse_global_config(const char *configfile,
fprintf(stderr, "invalid default output format \"%s\"\n", buf);
}
}
+ if (!xlu_cfg_get_string (config, "blkdev_start", &buf, 0))
+ blkdev_start = strdup(buf);
xlu_cfg_destroy(config);
}
diff --git a/tools/libxl/xl.h b/tools/libxl/xl.h
index 7e258d5..dba2c94 100644
--- a/tools/libxl/xl.h
+++ b/tools/libxl/xl.h
@@ -113,6 +113,7 @@ extern int dryrun_only;
extern char *lockfile;
extern char *default_vifscript;
extern char *default_bridge;
+extern char *blkdev_start;
enum output_format {
OUTPUT_FORMAT_JSON,
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index c9e9943..1a3945c 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -1669,7 +1669,7 @@ start:
if ( restore_file ) {
ret = libxl_domain_create_restore(ctx, &d_config,
cb, &child_console_pid,
- &domid, restore_fd);
+ &domid, restore_fd, blkdev_start);
/*
* On subsequent reboot etc we should create the domain, not
* restore/migrate-receive it again.
@@ -1677,7 +1677,8 @@ start:
restore_file = NULL;
}else{
ret = libxl_domain_create_new(ctx, &d_config,
- cb, &child_console_pid, &domid);
+ cb, &child_console_pid, &domid,
+ blkdev_start);
}
if ( ret )
goto error_out;
--
1.7.2.5
next prev parent reply other threads:[~2012-04-16 18:33 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-16 18:32 [PATCH v3 0/7] qdisk local attach Stefano Stabellini
2012-04-16 18:33 ` [PATCH v3 1/7] libxl: libxl__device_disk_local_attach return a new libxl_device_disk Stefano Stabellini
2012-04-17 17:25 ` Ian Jackson
2012-04-18 8:34 ` Ian Campbell
2012-04-20 13:58 ` Stefano Stabellini
2012-04-16 18:33 ` [PATCH v3 2/7] libxl: add a transaction parameter to libxl__device_generic_add Stefano Stabellini
2012-04-17 17:27 ` Ian Jackson
2012-04-18 8:41 ` Ian Campbell
2012-04-20 15:13 ` Stefano Stabellini
2012-04-16 18:33 ` [PATCH v3 3/7] libxl: introduce libxl__device_disk_add_t Stefano Stabellini
2012-04-17 17:37 ` Ian Jackson
2012-04-20 14:00 ` Stefano Stabellini
2012-04-16 18:33 ` Stefano Stabellini [this message]
2012-04-17 17:47 ` [PATCH v3 4/7] xl/libxl: add a blkdev_start parameter Ian Jackson
2012-04-20 14:04 ` Stefano Stabellini
2012-04-20 14:08 ` Ian Campbell
2012-04-23 17:40 ` Stefano Stabellini
2012-04-24 9:20 ` Ian Campbell
2012-04-20 14:22 ` Ian Jackson
2012-04-16 18:33 ` [PATCH v3 5/7] libxl: introduce libxl__alloc_vdev Stefano Stabellini
2012-04-17 17:53 ` Ian Jackson
2012-04-20 14:14 ` Stefano Stabellini
2012-04-20 14:28 ` Ian Jackson
2012-04-23 17:40 ` Stefano Stabellini
2012-04-16 18:33 ` [PATCH v3 6/7] xl/libxl: implement QDISK libxl_device_disk_local_attach Stefano Stabellini
2012-04-17 17:58 ` Ian Jackson
2012-04-20 14:24 ` Stefano Stabellini
2012-04-20 14:37 ` Ian Jackson
2012-04-23 17:40 ` Stefano Stabellini
2012-04-16 18:33 ` [PATCH v3 7/7] libxl__device_disk_local_attach: wait for state "connected" Stefano Stabellini
2012-04-17 18:01 ` Ian Jackson
2012-04-20 14:35 ` Stefano Stabellini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1334601190-14187-4-git-send-email-stefano.stabellini@eu.citrix.com \
--to=stefano.stabellini@eu.citrix.com \
--cc=Ian.Campbell@citrix.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).