diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2011-09-21 17:12:58 +0100 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2011-09-21 17:12:58 +0100 |
commit | 5ee9ef66cbd06dc9d5889a86045322ecdf844f18 (patch) | |
tree | c3a1111ae7b71f9abb0109fcc6da3ddd472b4cbb | |
parent | 50ecdcd19e41783c40db0277bfd447d5dd9f8015 (diff) | |
download | xen-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.c | 25 |
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); |