Fix crash on bad LXC URI (bz 554191) Add qemu.conf options for audio workaround Fix permissions of storage backing stores (bz 579067) Fix parsing certain USB sysfs files (bz 598272) Improve migration error reporting (bz 499750) Sanitize pool target paths (bz 494005) Add qemu.conf for clear emulator capabilities
123 lines
4.8 KiB
Diff
123 lines
4.8 KiB
Diff
diff -rup libvirt-0.7.1/qemud/libvirtd.init.in audio/qemud/libvirtd.init.in
|
|
--- libvirt-0.7.1/qemud/libvirtd.init.in 2009-07-22 09:37:32.000000000 -0400
|
|
+++ audio/qemud/libvirtd.init.in 2010-05-26 12:05:50.584822000 -0400
|
|
@@ -47,6 +47,9 @@ KRB5_KTNAME=/etc/libvirt/krb5.tab
|
|
|
|
test -f @sysconfdir@/sysconfig/libvirtd && . @sysconfdir@/sysconfig/libvirtd
|
|
|
|
+export QEMU_AUDIO_DRV
|
|
+export SDL_AUDIODRIVER
|
|
+
|
|
LIBVIRTD_CONFIG_ARGS=
|
|
if [ -n "$LIBVIRTD_CONFIG" ]
|
|
then
|
|
diff -rup libvirt-0.7.1/qemud/libvirtd_qemu.aug audio/qemud/libvirtd_qemu.aug
|
|
--- libvirt-0.7.1/qemud/libvirtd_qemu.aug 2009-09-08 10:16:02.000000000 -0400
|
|
+++ audio/qemud/libvirtd_qemu.aug 2010-05-26 12:07:24.169216000 -0400
|
|
@@ -36,6 +36,7 @@ module Libvirtd_qemu =
|
|
| str_array_entry "cgroup_device_acl"
|
|
| str_entry "save_image_format"
|
|
| str_entry "hugetlbfs_mount"
|
|
+ | bool_entry "vnc_allow_host_audio"
|
|
|
|
(* Each enty in the config is one of the following three ... *)
|
|
let entry = vnc_entry
|
|
diff -rup libvirt-0.7.1/qemud/libvirtd.sysconf audio/qemud/libvirtd.sysconf
|
|
--- libvirt-0.7.1/qemud/libvirtd.sysconf 2010-05-26 12:04:08.379130000 -0400
|
|
+++ audio/qemud/libvirtd.sysconf 2010-05-26 12:10:28.263486000 -0400
|
|
@@ -11,7 +11,8 @@
|
|
# Override the QEMU/SDL default audio driver probing when
|
|
# starting virtual machines using SDL graphics
|
|
#
|
|
-# NB these have no effect for VMs using VNC
|
|
+# NB these have no effect for VMs using VNC, unless vnc_allow_host_audio
|
|
+# is enabled in /etc/libvirt/qemu.conf
|
|
#QEMU_AUDIO_DRV=sdl
|
|
#
|
|
#SDL_AUDIODRIVER=pulse
|
|
diff -rup libvirt-0.7.1/qemud/test_libvirtd_qemu.aug audio/qemud/test_libvirtd_qemu.aug
|
|
--- libvirt-0.7.1/qemud/test_libvirtd_qemu.aug 2009-09-08 10:16:02.000000000 -0400
|
|
+++ audio/qemud/test_libvirtd_qemu.aug 2010-05-26 12:11:19.540907000 -0400
|
|
@@ -92,6 +92,8 @@ cgroup_device_acl = [ \"/dev/null\", \"/
|
|
|
|
save_image_format = \"gzip\"
|
|
|
|
+vnc_allow_host_audio = 1
|
|
+
|
|
hugetlbfs_mount = \"/dev/hugepages\"
|
|
"
|
|
|
|
@@ -195,4 +197,6 @@ hugetlbfs_mount = \"/dev/hugepages\"
|
|
{ "#empty" }
|
|
{ "save_image_format" = "gzip" }
|
|
{ "#empty" }
|
|
-{ "hugetlbfs_mount" = "/dev/hugepages" }
|
|
\ No newline at end of file
|
|
+{ "hugetlbfs_mount" = "/dev/hugepages" }
|
|
+{ "#empty" }
|
|
+{ "vnc_allow_host_audio" = "1" }
|
|
diff -rup libvirt-0.7.1/src/qemu.conf audio/src/qemu.conf
|
|
--- libvirt-0.7.1/src/qemu.conf 2009-09-10 05:15:56.000000000 -0400
|
|
+++ audio/src/qemu.conf 2010-05-26 12:08:12.419811000 -0400
|
|
@@ -152,3 +152,13 @@
|
|
# in a location of $MOUNTPOINT/libvirt/qemu
|
|
|
|
# hugetlbfs_mount = "/dev/hugepages"
|
|
+#
|
|
+
|
|
+# QEMU implements an extension for providing audio over a VNC connection,
|
|
+# though if your VNC client does not support it, your only chance for getting
|
|
+# sound output is through regular audio backends. By default, libvirt will
|
|
+# disable all QEMU sound backends if using VNC, since they can cause
|
|
+# permissions issues. Enabling this option will make libvirtd honor the
|
|
+# QEMU_AUDIO_DRV environment variable when using VNC.
|
|
+#
|
|
+# vnc_allow_host_audio = 0
|
|
diff -rup libvirt-0.7.1/src/qemu_conf.c audio/src/qemu_conf.c
|
|
--- libvirt-0.7.1/src/qemu_conf.c 2010-05-26 12:04:08.578062000 -0400
|
|
+++ audio/src/qemu_conf.c 2010-05-26 12:09:31.174206000 -0400
|
|
@@ -318,6 +318,10 @@ int qemudLoadDriverConfig(struct qemud_d
|
|
}
|
|
}
|
|
|
|
+ p = virConfGetValue (conf, "vnc_allow_host_audio");
|
|
+ CHECK_TYPE ("vnc_allow_host_audio", VIR_CONF_LONG);
|
|
+ if (p) driver->vncAllowHostAudio = p->l;
|
|
+
|
|
virConfFree (conf);
|
|
return 0;
|
|
}
|
|
@@ -2113,12 +2117,15 @@ int qemudBuildCommandLine(virConnectPtr
|
|
ADD_ARG_LIT(def->graphics[0]->data.vnc.keymap);
|
|
}
|
|
|
|
- /* QEMU implements a VNC extension for providing audio, so we
|
|
- * set the audio backend to none, to prevent it opening the
|
|
- * host OS audio devices since that causes security issues
|
|
- * and is non-sensical when using VNC.
|
|
+ /* Unless user requested it, set the audio backend to none, to
|
|
+ * prevent it opening the host OS audio devices, since that causes
|
|
+ * security issues and might not work when using VNC.
|
|
*/
|
|
- ADD_ENV_LIT("QEMU_AUDIO_DRV=none");
|
|
+ if (driver->vncAllowHostAudio) {
|
|
+ ADD_ENV_COPY("QEMU_AUDIO_DRV");
|
|
+ } else {
|
|
+ ADD_ENV_LIT("QEMU_AUDIO_DRV=none");
|
|
+ }
|
|
} else if ((def->ngraphics == 1) &&
|
|
def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL) {
|
|
char *xauth = NULL;
|
|
diff -rup libvirt-0.7.1/src/qemu_conf.h audio/src/qemu_conf.h
|
|
--- libvirt-0.7.1/src/qemu_conf.h 2009-09-10 09:45:00.000000000 -0400
|
|
+++ audio/src/qemu_conf.h 2010-05-26 12:10:07.196992000 -0400
|
|
@@ -110,6 +110,8 @@ struct qemud_driver {
|
|
char *hugetlbfs_mount;
|
|
char *hugepage_path;
|
|
|
|
+ unsigned int vncAllowHostAudio : 1;
|
|
+
|
|
virCapsPtr caps;
|
|
|
|
/* An array of callbacks */
|