- 29 3月, 2011 31 次提交
-
-
由 Eric Blake 提交于
My earlier testing for commit 34fa0de0 was done while starting just-built libvirt from an unconfined_t shell, where the fds happened to work when transferring to qemu. But when installed and run under virtd_t, failure to label the raw file (with no compression) or the pipe (with compression) triggers SELinux failures when passing fds over SCM_RIGHTS to svirt_t qemu. * src/qemu/qemu_migration.c (qemuMigrationToFile): When passing FDs, make sure they are labeled.
-
由 Eric Blake 提交于
First fallout of fd: migration - it looks like SELinux enforcing _does_ require fd labeling (running uninstalled libvirtd from an unconstrained shell had no problems, but once faked out by doing chcon `stat -c %C /usr/sbin/libvirtd` daemon/libvirtd run_init $PWD/daemon/libvirtd to run it with the same context as an init script service, and with SELinux enforcing, I got a rather confusing failure: error: Failed to save domain fedora_12 to fed12.img error: internal error unable to send TAP file handle: No file descriptor supplied via SCM_RIGHTS This fixes the error message, then I need to figure out a subsequent patch that does the fsetfilecon() necessary to keep things happy. It also appears that libvirtd hangs on a failed fd transfer; I don't know if that needs an independent fix. * src/qemu/qemu_monitor_text.c (qemuMonitorTextSendFileHandle): Improve message, since TAP is no longer only client.
-
由 Markus Groß 提交于
* src/libxl/libxl_driver.c: implements libxlDomainSuspend and libxlDomainResume
-
由 Markus Groß 提交于
* src/libxl/libxl_driver.c: implements libxlDomainGetOSType
-
由 Markus Groß 提交于
* src/libxl/libxl_driver.c: implements libxlDomainGetSchedulerType
-
由 Markus Groß 提交于
* src/Makefile.am src/libvirt_private.syms configure.ac: share and reuse the sexpr routines from sexpr.h of the old xen driver * src/libxl/libxl_driver.c: implements libxlDomainXMLFromNative and libxlDomainXMLToNative
-
由 Markus Groß 提交于
Hook the virtual cpu functions to their libxenlight counterparts * src/libxl/libxl_driver.c: implements libxlDomainSetVcpus, libxlDomainGetVcpus, libxlDomainSetVcpusFlags, libxlDomainGetVcpusFlags and libxlDomainPinVcpu
-
由 Markus Groß 提交于
* src/libxl/libxl_conf.[ch] src/libxl/libxl_driver.[ch]: add authors after the licence template
-
由 Markus Groß 提交于
* src/libxl/libxl_conf.h: add the necessary fields to the driver private structure * src/libxl/libxl_driver.c: add lifecycle event support and entry points for event(de)register(any)
-
由 Markus Groß 提交于
* src/libxl/libxl_driver.c: use ignore_value() in libxlDomainObjUnref and libxlCreateDomEvents
-
由 Daniel P. Berrange 提交于
* daemon/remote.c, src/remote/remote_driver.c: Implementation of storage vol upload/download APIs * src/remote/remote_protocol.x: Wire protocol definition for upload/download * daemon/remote_dispatch_args.h, daemon/remote_dispatch_prototypes.h, daemon/remote_dispatch_table.h, src/remote/remote_protocol.h, src/remote/remote_protocol.c: Re-generate
-
由 Daniel P. Berrange 提交于
Use generic FD streams to allow data upload/download to/from any storage volume * src/storage/storage_driver.c: Wire up upload/download APIs
-
由 Daniel P. Berrange 提交于
New APIs are added allowing streaming of content to/from storage volumes. * include/libvirt/libvirt.h.in: Add virStorageVolUpload and virStorageVolDownload APIs * src/driver.h, src/libvirt.c, src/libvirt_public.syms: Stub code for new APIs * src/storage/storage_driver.c, src/esx/esx_storage_driver.c: Add dummy entries in driver table for new APIs
-
由 Daniel P. Berrange 提交于
The O_NONBLOCK flag doesn't work as desired on plain files or block devices. Introduce an I/O helper program that does the blocking I/O operations, communicating over a pipe that can support O_NONBLOCK * src/fdstream.c, src/fdstream.h: Add non-blocking I/O on plain files/block devices * src/Makefile.am, src/util/iohelper.c: I/O helper program * src/qemu/qemu_driver.c, src/lxc/lxc_driver.c, src/uml/uml_driver.c, src/xen/xen_driver.c: Update for streams API change
-
由 Eric Blake 提交于
Regression introduced in commit 6034ddd5. * src/qemu/qemu_driver.c (qemudDomainSaveFlag): Jump to correct label.
-
由 Eric Blake 提交于
* src/util/command.c (virCommandAbort) [WIN32]: Provide stub. Reported by Daniel P. Berrange's autobuilder.
-
由 Eric Blake 提交于
Spawn the compressor ourselves, instead of requiring the shell. * src/qemu/qemu_migration.c (qemuMigrationToFile): Spawn compression helper process when needed.
-
由 Eric Blake 提交于
SELinux labeling and cgroup ACLs aren't required if we hand a pre-opened fd to qemu. All the more reason to love fd: migration. * src/qemu/qemu_migration.c (qemuMigrationToFile): Skip steps that are irrelevant in fd migration.
-
由 Eric Blake 提交于
This points out that core dumps (still) don't work for root-squash NFS, since the fd is not opened correctly. This patch should not introduce any functionality change, it is just a refactoring to avoid duplicated code. * src/qemu/qemu_migration.h (qemuMigrationToFile): New prototype. * src/qemu/qemu_migration.c (qemuMigrationToFile): New function. * src/qemu/qemu_driver.c (qemudDomainSaveFlag, doCoreDump): Use it.
-
由 Eric Blake 提交于
Direct access to an open file is so much simpler than passing everything through a pipe! * src/qemu/qemu_driver.c (qemudOpenAsUID) (qemudDomainSaveImageClose): Delete. (qemudDomainSaveImageOpen): Rename... (qemuDomainSaveImageOpen): ...and drop read_pid argument. Use virFileOpenAs instead of qemudOpenAsUID. (qemudDomainSaveImageStartVM, qemudDomainRestore) (qemudDomainObjRestore): Rename... (qemuDomainSaveImageStartVM, qemuDomainRestore) (qemDomainObjRestore): ...and simplify accordingly. (qemudDomainObjStart, qemuDriver): Update callers.
-
由 Eric Blake 提交于
* src/storage/storage_backend.c (createRawFileOpHook): Change signature. (struct createRawFileOpHookData): Delete unused struct. (virStorageBackendCreateRaw): Adjust caller. * src/qemu/qemu_driver.c (struct fileOpHookData): Delete unused struct. (qemudDomainSaveFileOpHook): Rename... (qemuDomainSaveFileOpHook): ...and change signature. (qemudDomainSaveFlag): Adjust caller.
-
由 Eric Blake 提交于
Separating the indentation from the real patch made review easier. * src/util/util.c (virFileOpenAs): Whitespace changes.
-
由 Eric Blake 提交于
This patch intentionally doesn't change indentation, in order to make it easier to review the real changes. * src/util/util.h (VIR_FILE_OP_RETURN_FD, virFileOperationHook): Delete. (virFileOperation): Rename... (virFileOpenAs): ...and reduce parameters. * src/util/util.c (virFileOperationNoFork, virFileOperation): Rename and simplify. * src/qemu/qemu_driver.c (qemudDomainSaveFlag): Adjust caller. * src/storage/storage_backend.c (virStorageBackendCreateRaw): Likewise. * src/libvirt_private.syms: Reflect rename.
-
由 Eric Blake 提交于
* src/storage/storage_backend.c (virStorageBackendCreateRaw): Use new virFileOperation flag.
-
由 Eric Blake 提交于
This makes root-squash NFS saves more efficient. * src/qemu/qemu_driver.c (qemudDomainSaveFlag): Use new virFileOperation flag to open fd only once.
-
由 Eric Blake 提交于
Currently, the hook function in virFileOperation is extremely limited: it must be async-signal-safe, and cannot modify any memory in the parent process. It is much handier to return a valid fd and operate on it in the parent than to deal with hook restrictions. * src/util/util.h (VIR_FILE_OP_RETURN_FD): New flag. * src/util/util.c (virFileOperationNoFork, virFileOperation): Honor new flag.
-
由 Eric Blake 提交于
This allows direct saves (no compression, no root-squash NFS) to use the more efficient fd: migration, which in turn avoids a race where qemu exec: migration can sometimes fail because qemu does a generic waitpid() that conflicts with the pclose() used by exec:. Further patches will solve compression and root-squash NFS. * src/qemu/qemu_driver.c (qemudDomainSaveFlag): Use new function when there is no compression.
-
由 Eric Blake 提交于
Latent bug introduced in commit 2d6a5819 (Aug 2009), but not exposed until commit 1859939a (Jan 2011). Basically, when virExec creates a pipe, it always marks libvirt's side as cloexec. If libvirt then wants to hand that pipe to another child process, things work great if the fd is dup2()'d onto stdin or stdout (as with stdin: or exec: migration), but if the pipe is instead used as-is (such as with fd: migration) then qemu sees EBADF because the fd was closed at exec(). This is a minimal fix for the problem at hand; it is slightly racy, but no more racy than the rest of libvirt fd handling, including the case of uncompressed save images. A more invasive fix, but ultimately safer at avoiding leaking unintended fds, would be to _always and atomically_ open all fds as cloexec in libvirt (thanks to primitives like open(O_CLOEXEC), pipe2(), accept4(), ...), then teach virExec to clear that bit for all fds explicitly marked to be handed to the child only after forking. * src/qemu/qemu_command.c (qemuBuildCommandLine): Clear cloexec flag. * tests/qemuxml2argvtest.c (testCompareXMLToArgvFiles): Tweak test.
-
由 Eric Blake 提交于
* src/util/util.h (virSetInherit): New prototype. * src/util/util.c (virSetCloseExec): Move guts... (virSetInherit): ...to new function, and allow clearing. * src/libvirt_private.syms (util.h): Export it.
-
由 Eric Blake 提交于
* src/util/logging.c (virLogStartup, virLogSetBufferSize): Over-allocate, so that a debugger can just print the circular buffer. Suggested by Daniel Veillard.
-
由 Eric Blake 提交于
* src/Makefile.am (remote_protocol-structs): Flatten tabs. * src/remote_protocol-structs: Likewise. Also add a hint to emacs to make it easier to keep spaces in the file.
-
- 28 3月, 2011 3 次提交
-
-
由 Eric Blake 提交于
* src/qemu/qemu_process.c (qemuProcessStart, qemuProcessStop): Fix typos. * docs/hooks.html.in: Document 'prepare' and 'release' hooks.
-
由 Eric Blake 提交于
Otherwise, if something like doStopVcpus fails after the first restore, a second restore is attempted and throws a useless warning. * src/qemu/qemu_driver.c (qemudDomainSaveFlag): Avoid second restore of state label.
-
由 Daniel P. Berrange 提交于
The Open Nebula driver has been unmaintained since it was first introduced. The only commits have been for tree-wide cleanups. It also has a major design flaw, in that it only knows about guests that it has created itself, which makes it of very limited use. Discussions wrt evolution of the VMWare ESX driver, concluded that it should limit itself to single-node ESX operation and not try to manage the multi-node architecture of VirtualCenter. Open Nebula is a cluster like Virtual Center, not a single node system, so the same reasoning applies. The DeltaCloud project includes an Open Nebula driver and is a much better fit architecturally, since it is explicitly targetting the distributed multihost cluster scenario. Thus this patch deletes the libvirt Open Nebula driver with the recommendation that people use DeltaCloud for managing it instead. * configure.ac: Remove probe for xmlrpc & --with-one arg * daemon/Makefile.am, daemon/libvirtd.c, src/Makefile.am: Remove ONE driver build * src/opennebula/one_client.c, src/opennebula/one_client.h, src/opennebula/one_conf.c, src/opennebula/one_conf.h, src/opennebula/one_driver.c, src/opennebula/one_driver.c: Delete files * autobuild.sh, libvirt.spec.in, mingw32-libvirt.spec.in: Remove build rules for Open Nebula * docs/drivers.html.in, docs/sitemap.html.in: Remove reference to OpenNebula * docs/drvone.html.in: Delete file
-
- 26 3月, 2011 2 次提交
-
-
由 Matthias Bolte 提交于
-
由 Eric Blake 提交于
* src/util/hooks.c (virHookCheck): Missing hooks should just be debug, not warn.
-
- 25 3月, 2011 4 次提交
-
-
由 Philipp Hahn 提交于
Add missing open curly brace between function declaration of non-linux variant of qemudDomainInterfaceStats() and its body. Signed-off-by: NPhilipp Hahn <hahn@univention.de>
-
由 Eric Blake 提交于
Sometimes, an asynchronous helper is started (such as a compressor or iohelper program), but a later error means that we want to abort that child. Make this easier. Note that since daemons and virCommandRunAsync can't mix, the only time virCommandFree can reap a process is if someone did virCommandRunAsync for a non-daemon and didn't stash the pid. * src/util/command.h (virCommandAbort): New prototype. * src/util/command.c (_virCommand): Add new field. (virCommandRunAsync, virCommandWait): Track whether pid was used. (virCommandFree): Reap child if caller did not request pid. (virCommandAbort): New function. * src/libvirt_private.syms (command.h): Export it. * tests/commandtest.c (test19): New test.
-
由 Eric Blake 提交于
It doesn't make sense to run a daemon without synchronously waiting for the child process to reply whether the daemon has been kicked off and pidfile written yet. * src/util/command.c (VIR_EXEC_RUN_SYNC): New constant. (virCommandRun): Set temporary flag. (virCommandRunAsync): Use it to prevent async runs of intermediate child when spawning asynchronous daemon grandchild.
-
由 Eric Blake 提交于
Child processes don't always reach _exit(); if they die from a signal, then any messages should still be accurate. Most users either expect a 0 status (thankfully, if status==0, then WIFEXITED(status) is true and WEXITSTATUS(status)==0 for all known platforms) or were filtering on WIFEXITED before printing a status, but a few were missing this check. Additionally, nwfilter_ebiptables_driver was making an assumption that works on Linux (where WEXITSTATUS shifts and WTERMSIG just masks) but fails on other platforms (where WEXITSTATUS just masks and WTERMSIG shifts). * src/util/command.h (virCommandTranslateStatus): New helper. * src/libvirt_private.syms (command.h): Export it. * src/util/command.c (virCommandTranslateStatus): New function. (virCommandWait): Use it to also diagnose status from signals. * src/security/security_apparmor.c (load_profile): Likewise. * src/storage/storage_backend.c (virStorageBackendQEMUImgBackingFormat): Likewise. * src/util/util.c (virExecDaemonize, virRunWithHook) (virFileOperation, virDirCreate): Likewise. * daemon/remote.c (remoteDispatchAuthPolkit): Likewise. * src/nwfilter/nwfilter_ebiptables_driver.c (ebiptablesExecCLI): Likewise.
-