[libvirt] [PATCH] qemudDomainMemoryPeek: chown temporary file to qemu.qemu.
Richard W.M. Jones
rjones at redhat.com
Fri May 20 14:28:14 UTC 2011
This attached patch resolves a fairly obvious problem which stops
qemuDomainMemoryPeek from working at all.
However, it's not the whole story. Read on ...
(1) qemu still fails unless I manually set the mode of
/var/cache/libvirt to 0755 (it is normally 0700).
Owner Fails Works
/var/cache/libvirt root.root 0700 0755
/var/cache/libvirt/qemu qemu.qemu 0750 0750
qemu is doing:
open("/var/cache/libvirt/qemu/qemu.mem.fdVCod", O_WRONLY|O_CREAT|O_TRUNC, 0666)
It's kinda annoying that /etc/libvirt and /var/{cache,lib}/libvirt are
unreadable by other users. Is there some deep reason to do this?
(2) After applying this patch, using virDomainMemoryPeek causes
libvirtd to generate the following serious-looking warning. It
doesn't appear to crash or fail in any way that I can tell:
15:17:09.982: 7784: error : virDomainFree:2122 : invalid domain pointer in virDomainFree
I don't know where this is coming from. It only appears when my
program actually does virDomainMemoryPeek, not when I have the same
code with virDomainMemoryPeek commented out.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://et.redhat.com/~rjones/virt-top
-------------- next part --------------
>From 1a2ba0c1b58142a06602722c6bb0995ef6e8b347 Mon Sep 17 00:00:00 2001
From: Richard W.M. Jones <rjones at redhat.com>
Date: Fri, 20 May 2011 13:56:46 +0100
Subject: [PATCH] qemudDomainMemoryPeek: chown temporary file to qemu.qemu.
Otherwise qemu is unable to write to it, with the error:
libvir: QEMU error : internal error unable to execute QEMU command 'memsave': Could not open '/var/cache/libvirt/qemu/qemu.mem.RRNvLv'
---
src/qemu/qemu_driver.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 44acc6a..08d2549 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -5536,6 +5536,14 @@ qemudDomainMemoryPeek (virDomainPtr dom,
goto endjob;
}
+ if (qemu_driver->privileged &&
+ chown(tmp, qemu_driver->user, qemu_driver->group) < 0) {
+ virReportSystemError(errno,
+ _("unable to set ownership on %s to %d:%d"),
+ tmp, qemu_driver->user, qemu_driver->group);
+ goto endjob;
+ }
+
priv = vm->privateData;
qemuDomainObjEnterMonitor(vm);
if (flags == VIR_MEMORY_VIRTUAL) {
--
1.7.5.1
More information about the libvir-list
mailing list