aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2011-09-21 17:12:58 +0100
committerIan Campbell <ian.campbell@citrix.com>2011-09-21 17:12:58 +0100
commit5ee9ef66cbd06dc9d5889a86045322ecdf844f18 (patch)
treec3a1111ae7b71f9abb0109fcc6da3ddd472b4cbb
parent50ecdcd19e41783c40db0277bfd447d5dd9f8015 (diff)
downloadxen-5ee9ef66cbd06dc9d5889a86045322ecdf844f18.tar.gz
xen-5ee9ef66cbd06dc9d5889a86045322ecdf844f18.tar.bz2
xen-5ee9ef66cbd06dc9d5889a86045322ecdf844f18.zip
libxl: do not start a xenpv qemu solely for tap devices if blktap is available
qemu is used as a fallback for DISK_BACKEND_TAP if no blktap is available but if blktap is available, or for DISK_BACKEND_PHY, we don't need a qemu process. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com> xen-unstable changeset: 23044:d4ca456c0c25 xen-unstable date: Tue Mar 15 18:19:47 2011 +0000 Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
-rw-r--r--tools/libxl/libxl_dm.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
index d535e11a76..1ffcc909f8 100644
--- a/tools/libxl/libxl_dm.c
+++ b/tools/libxl/libxl_dm.c
@@ -828,8 +828,29 @@ int libxl__need_xenpv_qemu(libxl_ctx *ctx,
goto out;
}
- if (nr_disks > 0 && !libxl__blktap_enabled(&gc))
- ret = 1;
+ if (nr_disks > 0) {
+ int blktap_enabled = -1;
+ for (i = 0; i < nr_disks; i++) {
+ switch (disks[i].backend) {
+ case DISK_BACKEND_TAP:
+ if (blktap_enabled == -1)
+ blktap_enabled = libxl__blktap_enabled(&gc);
+ if (!blktap_enabled) {
+ ret = 1;
+ goto out;
+ }
+ break;
+
+ case DISK_BACKEND_QDISK:
+ ret = 1;
+ goto out;
+
+ case DISK_BACKEND_PHY:
+ case DISK_BACKEND_UNKNOWN:
+ break;
+ }
+ }
+ }
out:
libxl__free_all(&gc);