2011-08-19 11:57:25 +00:00
|
|
|
--- libguestfs-1.13.6.old/src/launch.c 2011-08-18 18:02:56.000000000 +0100
|
|
|
|
+++ libguestfs-1.13.6/src/launch.c 2011-08-19 12:56:00.131758605 +0100
|
|
|
|
@@ -76,10 +76,10 @@
|
|
|
|
static void print_qemu_command_line (guestfs_h *g, char **argv);
|
2011-07-26 17:56:16 +00:00
|
|
|
static int connect_unix_socket (guestfs_h *g, const char *sock);
|
|
|
|
static int qemu_supports (guestfs_h *g, const char *option);
|
|
|
|
-
|
|
|
|
-#if 0
|
|
|
|
static int qemu_supports_re (guestfs_h *g, const pcre *option_regex);
|
|
|
|
|
|
|
|
+static pcre *re_machine_name;
|
|
|
|
+
|
|
|
|
static void compile_regexps (void) __attribute__((constructor));
|
|
|
|
static void free_regexps (void) __attribute__((destructor));
|
|
|
|
|
2011-08-19 11:57:25 +00:00
|
|
|
@@ -97,13 +97,15 @@
|
2011-07-26 17:56:16 +00:00
|
|
|
abort (); \
|
|
|
|
} \
|
|
|
|
} while (0)
|
|
|
|
+
|
|
|
|
+ COMPILE (re_machine_name, "-machine .*\\bname\\b", 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
free_regexps (void)
|
|
|
|
{
|
|
|
|
+ pcre_free (re_machine_name);
|
|
|
|
}
|
|
|
|
-#endif
|
|
|
|
|
|
|
|
/* Add a string to the current command line. */
|
|
|
|
static void
|
2011-08-19 11:57:25 +00:00
|
|
|
@@ -517,14 +519,19 @@
|
2011-07-26 17:56:16 +00:00
|
|
|
if (qemu_supports (g, "-nodefconfig"))
|
|
|
|
add_cmdline (g, "-nodefconfig");
|
|
|
|
|
|
|
|
- /* The qemu -machine option (added 2010-12) is a bit more sane
|
|
|
|
- * since it falls back through various different acceleration
|
|
|
|
- * modes, so try that first (thanks Markus Armbruster).
|
|
|
|
+ /* The qemu -machine option (added 2010-12) falls back through
|
|
|
|
+ * various different acceleration modes, so try that first (thanks
|
|
|
|
+ * Markus Armbruster). However in qemu commit 9052ea6bf4962b13
|
|
|
|
+ * the syntax was changed, so we have to detect that.
|
|
|
|
*/
|
|
|
|
- if (qemu_supports (g, "-machine")) {
|
|
|
|
+ if (qemu_supports_re (g, re_machine_name)) { /* after 2011-07-23 */
|
|
|
|
+ add_cmdline (g, "-machine");
|
|
|
|
+ add_cmdline (g, "pc,accel=kvm:tcg");
|
|
|
|
+ }
|
|
|
|
+ else if (qemu_supports (g, "-machine")) { /* after 2010-12 */
|
|
|
|
add_cmdline (g, "-machine");
|
|
|
|
add_cmdline (g, "accel=kvm:tcg");
|
|
|
|
- } else {
|
|
|
|
+ } else { /* no -machine option */
|
|
|
|
/* qemu sometimes needs this option to enable hardware
|
|
|
|
* virtualization, but some versions of 'qemu-kvm' will use KVM
|
|
|
|
* regardless (even where this option appears in the help text).
|
2011-08-19 11:57:25 +00:00
|
|
|
@@ -1153,7 +1160,6 @@
|
2011-07-26 17:56:16 +00:00
|
|
|
return strstr (g->qemu_help, option) != NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
-#if 0
|
|
|
|
/* As above but using a regex instead of a fixed string. */
|
|
|
|
static int
|
|
|
|
qemu_supports_re (guestfs_h *g, const pcre *option_regex)
|
2011-08-19 11:57:25 +00:00
|
|
|
@@ -1165,7 +1171,6 @@
|
2011-07-26 17:56:16 +00:00
|
|
|
|
|
|
|
return match (g, g->qemu_help, option_regex);
|
|
|
|
}
|
|
|
|
-#endif
|
|
|
|
|
|
|
|
/* Check if a file can be opened. */
|
|
|
|
static int
|