[libvirt] [PATCH v2 4/4] qemu: make qemu processes to retain rawio capability
Daniel P. Berrange
berrange at redhat.com
Tue Jan 31 12:04:33 UTC 2012
On Tue, Jan 31, 2012 at 01:52:27PM +0900, Taku Izumi wrote:
>
> This patch revises qemuProcessStart() function for qemu
> processes to retain CAP_SYS_RAWIO if needed.
> And in case of that, add taint flag to domain.
>
> Signed-off-by: Taku Izumi <izumi.taku at jp.fujitsu.com>
> Signed-off-by: Shota Hirae <m11g1401 at hibikino.ne.jp>
> ---
> src/qemu/qemu_domain.c | 3 +++
> src/qemu/qemu_process.c | 8 ++++++++
> 2 files changed, 11 insertions(+)
>
> Index: libvirt/src/qemu/qemu_process.c
> ===================================================================
> --- libvirt.orig/src/qemu/qemu_process.c
> +++ libvirt/src/qemu/qemu_process.c
> @@ -27,6 +27,7 @@
> #include <sys/stat.h>
> #include <sys/time.h>
> #include <sys/resource.h>
> +#include <linux/capability.h>
>
> #include "qemu_process.h"
> #include "qemu_domain.h"
> @@ -3083,6 +3084,7 @@ int qemuProcessStart(virConnectPtr conn,
> virCommandPtr cmd = NULL;
> struct qemuProcessHookData hookData;
> unsigned long cur_balloon;
> + int i;
>
> hookData.conn = conn;
> hookData.vm = vm;
> @@ -3335,6 +3337,12 @@ int qemuProcessStart(virConnectPtr conn,
> if (driver->clearEmulatorCapabilities)
> virCommandClearCaps(cmd);
>
> + /* in case a certain disk is desirous of CAP_SYS_RAWIO, add this */
> + for (i = 0; i < vm->def->ndisks; i++) {
> + if (vm->def->disks[i]->rawio == 1)
> + virCommandAllowCap(cmd, CAP_SYS_RAWIO);
> + }
> +
> virCommandSetPreExecHook(cmd, qemuProcessHook, &hookData);
>
> virCommandSetOutputFD(cmd, &logfile);
> Index: libvirt/src/qemu/qemu_domain.c
> ===================================================================
> --- libvirt.orig/src/qemu/qemu_domain.c
> +++ libvirt/src/qemu/qemu_domain.c
> @@ -1259,6 +1259,9 @@ void qemuDomainObjCheckDiskTaint(struct
> if (!disk->driverType &&
> driver->allowDiskFormatProbing)
> qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_DISK_PROBING, logFD);
> +
> + if (disk->rawio)
> + qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_HIGH_PRIVILEGES, logFD);
> }
ACK
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list