Commit Graph

291 Commits

Author SHA1 Message Date
Daniel P. Berrange
426f9772b8 Fix QEMU ARGV detection with kvm >= 85 2009-05-11 15:14:24 +00:00
Cole Robinson
0c8a9d2d51 Check that QEMU is still alive while reading startup output.
By checking the pid every retry period, we can quickly determine if
the process crashed at startup, rather than make the user wait for
the entire timeout (3 seconds).
2009-05-11 13:52:31 +00:00
Cole Robinson
a331653dad Add pidfile argument to __virExec
virExec will write out the pid of the daemonized process only. Use this
in the QEMU driver, rather than QEMU's pidfile, so we can catch errors we
might miss if the emulator bails early.
2009-05-11 13:50:38 +00:00
Cole Robinson
27d72bd517 Report qemu log data if we fail to daemonize the process.
This ensures the user will actually see 'hook' function error output.
2009-05-11 13:37:19 +00:00
Cole Robinson
79d9d2432f Add helper function virExecDaemonize
Wraps __virExec with the VIR_EXEC_DAEMON flag. Waits on the intermediate
process to ensure we don't end up with any zombies, and differentiates between
original process errors and intermediate process errors.
2009-05-11 13:34:37 +00:00
Daniel P. Berrange
54ebbde1e1 Improve name & UUID uniqueness checking in QEMU driver 2009-05-08 10:11:14 +00:00
Daniel P. Berrange
7022759b7e Add new VIR_ERR_OPERATION_INVALID error code & use it in Xen & QEMU drivers 2009-05-08 09:58:46 +00:00
Daniel Veillard
7ee54d8356 Changes needed for multiple graphics adapters
* src/domain_conf.c src/domain_conf.h: parse and save multiple
  graphics elements instead of one, patch by Pritesh Kothari
* src/qemu_conf.c src/qemu_driver.c: adapt the qemu/kvm driver for
  the new structures, patch by Pritesh Kothari
* src/xend_internal.c src/xm_internal.c: same thing for Xen drivers
Daniel
2009-05-07 07:27:49 +00:00
Mark McLoughlin
1d6c713b18 Fix qemu driver's interpretation of <hostdev managed='yes'/>
This change:

  Tue Mar  3 08:55:13 GMT 2009 Daniel P. Berrange <berrange@redhat.com>

       Don't try to detach & reset PCI devices while running test
       suite for XML-> ARGV conversion.
       * src/qemu_driver.c: Add qemuPrepareHostDevices() helper to
       detach and reset PCI devices.
       * src/qemu_conf.c: Don't detach & reset PCI devices while
       building the command line argv

accidentally did this:

-            if (hostdev->managed) {
+        if (!hostdev->managed) {

Which results in managed='yes' not causing the device to be
detached when the guest is starting.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
2009-05-06 15:56:20 +00:00
Cole Robinson
4f10759024 Refresh QEMU driver capabilities for each getCapabilities call.
Also fix up a couple issues where caps are accessed without locking
the driver structure.
2009-05-06 14:20:34 +00:00
Cole Robinson
840955ff7c Don't throw away StartVM errors when migrating/restoring in qemu driver. 2009-05-05 14:26:02 +00:00
Daniel P. Berrange
9c19a898f9 Remove stale QEMU pidfiles 2009-04-21 19:14:50 +00:00
Daniel P. Berrange
cfa30de3b8 Improve error reporting for lookup failures on inactive domains 2009-04-19 15:30:50 +00:00
Daniel P. Berrange
9a15c48d2d Switch to using virDomainDefPtr for building command line in QEMU driver 2009-04-19 14:50:01 +00:00
Guido Günther
5caa1e0eb0 Don't log monitor output to domain log file.
It's logged via the logging system already. Prefix monitor debug output with vm
name.
2009-04-16 15:56:27 +00:00
Daniel P. Berrange
9ec1a56923 Fix crash in svirt verification, and incorrect cleanup in VM failure paths 2009-04-03 14:10:17 +00:00
Daniel P. Berrange
92ff72b52c Misc NUMA related fixes 2009-04-03 12:45:05 +00:00
Daniel P. Berrange
11b0ed46c5 Improve security label error reporting & verification (Dan Walsh) 2009-04-03 10:55:51 +00:00
Daniel P. Berrange
461afc2200 Fix URI check in QEMU migration 2009-04-01 09:54:20 +00:00
Chris Lalancette
4d3d0039e5 Convert all drivers to use old-style struct initializers; this makes a handy
built-in TODO list for each driver.  Also rip out the internal getURI method;
it is never used by any of the drivers, and was buggy to boot.
2009-03-31 15:47:16 +00:00
Daniel P. Berrange
3b97f7db53 DOn't try to query memory balloon if guest isn't active 2009-03-27 14:57:51 +00:00
Daniel P. Berrange
cb7593bd19 Support memory ballooning in QEMU 2009-03-27 11:44:29 +00:00
Daniel P. Berrange
c86afc85ee Fix labelling of shared/readonly devices (Dan Walsh) 2009-03-17 11:35:40 +00:00
Cole Robinson
2068f2f5a3 Initialize security driver after config parsing 2009-03-16 17:16:04 +00:00
Daniel P. Berrange
b44af714d3 Support SASL auth for VNC server. 2009-03-16 13:54:26 +00:00
Daniel P. Berrange
8fa62166c4 Avoid deadlock setting vcpus in QEMU driver 2009-03-16 11:44:46 +00:00
Daniel P. Berrange
aad6873175 Don't try to close NULL virConnectPtr object 2009-03-16 10:30:04 +00:00
Daniel P. Berrange
61796bdb4b Explicitly track static declared vs dynamically generated security labels 2009-03-03 16:53:13 +00:00
Daniel P. Berrange
e4818895c1 Misc sVirt bug fixes 2009-03-03 15:18:24 +00:00
Daniel P. Berrange
d0aa10fdd6 QEMU security driver usage for sVirt support (James Morris, Dan Walsh, Daniel Berrange) 2009-03-03 12:03:44 +00:00
Daniel P. Berrange
b756b005ec Replace use of qemudLog with logging.h APIs/macros 2009-03-03 11:40:08 +00:00
Daniel P. Berrange
8d13558ae6 Internal driver API for sVirt support (James Morris & Dan Walsh) 2009-03-03 09:14:28 +00:00
Daniel P. Berrange
8f1912c58d Don't try to detach & reset PCI devices while running test suite for XML-> ARGV conversion. 2009-03-03 08:59:45 +00:00
Cole Robinson
4837725f37 Better error reporting from qemu AttachDevice 2009-03-02 17:39:43 +00:00
Cole Robinson
adecc8fc9e Remove redundant monitor watch variable (s/monitor_watch/monitorWatch/) 2009-03-02 17:33:39 +00:00
Daniel Veillard
34d23b0b01 * src/qemu_driver.c: add qemu dettach/reattach/reset implementation
patch by Mark McLoughlin.
Daniel
2009-03-02 16:32:52 +00:00
Daniel Veillard
737af2ea04 Adds the APIs for virNodeDeviceDettach , ReAttach and Reset
* include/libvirt/libvirt.h include/libvirt/libvirt.h.in
  src/driver.h src/libvirt.c src/libvirt_public.syms
  src/lxc_driver.c src/openvz_driver.c src/qemu_driver.c
  src/test.c src/uml_driver.c: add the public APIs for
  virNodeDeviceDettach virNodeDeviceReAttach and virNodeDeviceReset
  and extends the driver structure accordingly.
Daniel
2009-03-02 16:25:13 +00:00
Chris Lalancette
014bb5cf7e If there is a failure during Qemu offline migrate, make sure to resume the
guest.

Signed-off-by: Chris Lalancette <clalance@redhat.com>
2009-02-27 16:18:50 +00:00
Guido Günther
4cbe86fcb8 (s)size_t type cleanup 2009-02-19 08:18:31 +00:00
Cole Robinson
7e8ad2036a Remove the _actually_ incorrect ATTRIBUTE_UNUSED (Patch by Maximilian Wilhelm) 2009-02-18 01:37:47 +00:00
Cole Robinson
cf47347312 Remove incorrect ATTRIBUTE_UNUSED usage. 2009-02-17 14:38:22 +00:00
Guido Günther
6efe591e66 usleep to wait for domain logfile to fill up 2009-02-13 11:35:16 +00:00
Guido Günther
e9c920ba67 fix return status when domain didn't show up 2009-02-11 20:33:11 +00:00
Guido Günther
0437e75291 Don't ignore errors to save domain status 2009-02-07 21:36:06 +00:00
Jim Meyering
dcfa920aff use virReportOOMError rather than more verbose equivalent
* src/qemu_driver.c (qemudDomainSave, qemudDomainRestore)
(qemudDomainAttachPciDiskDevice)
(qemudDomainAttachUsbMassstorageDevice):
2009-02-05 16:27:40 +00:00
Jim Meyering
e60430be53 qemu_driver.c: s/strerror/virStrerror.../
Perform most changs automatically, with this:
perl -pi -e 's/\bstrerror *\((.+?)\)/virStrerror($1, ebuf, sizeof ebuf)/'
Then, declare ebuf, as needed
2009-02-05 16:27:28 +00:00
Jim Meyering
b0d49913d5 remove duplicate *SetCloseExec and *SetNonBlock functions
* src/qemu_driver.c: Use virSetCloseExec and virSetNonBlock,
rather than qemuSet* functions.  Suggested by Daniel P. Berrange.
* src/util.c (virSetCloseExec): Publicize.
* src/util.h (virSetCloseExec): Declare
* src/libvirt_private.syms: Add virSetCloseExec.
2009-02-05 16:27:17 +00:00
Jim Meyering
caea9c00e3 qemu_driver.c: use virReportSystemError in place of some qemudLog uses
...thus eliminating many uses of strerror.
(kvmGetMaxVCPUs): Rather than merely warning, diagnose an error
and return -1 upon failure to open KVM_DEVICE.  Suggested by
Daniel P. Berrange.
2009-02-05 16:11:25 +00:00
Jim Meyering
6778ad0f07 avoid a format-related warning
* src/qemu_driver.c (qemudStartVMDaemon): Use "%s".
2009-02-03 13:09:18 +00:00
Daniel P. Berrange
896761e5c7 Fix numerous bugs in QEMU domain startup 2009-01-30 17:07:29 +00:00
Daniel P. Berrange
3801794908 Support VNC password setting in QEMU driver 2009-01-29 17:50:00 +00:00
Daniel P. Berrange
4f4bfbc79e Fix save/restore migrate syntax for new KVM releases 2009-01-29 17:27:54 +00:00
Jim Meyering
bc18a91f91 error-reporting calls using VIR_ERR_NO_MEMORY: use virReportOOMError instead
* src/uml_conf.c (VIR_FROM_THIS): Define to VIR_FROM_UML.
* src/xs_internal.c (VIR_FROM_THIS): Define to VIR_FROM_XEN.
* src/xml.c (VIR_FROM_THIS): Define to VIR_FROM_XML.
* src/stats_linux.c (VIR_FROM_THIS): Define to VIR_FROM_STATS_LINUX.
* src/datatypes.c (VIR_FROM_THIS): Define to VIR_FROM_NONE.
* src/lxc_conf.c (VIR_FROM_THIS): Define to VIR_FROM_LXC.
* src/libvirt.c (VIR_FROM_THIS): Define to VIR_FROM_NONE.
* src/node_device_conf.c (VIR_FROM_THIS): Define to VIR_FROM_NODEDEV.
* src/openvz_conf.c (VIR_FROM_THIS): Define to VIR_FROM_OPENVZ.
* src/openvz_driver.c (VIR_FROM_THIS): Define to VIR_FROM_OPENVZ.
* src/conf.c (VIR_FROM_THIS): Define to VIR_FROM_CONF.
Note: this loses config_filename:config_lineno diagnostics,
but that's ok.
* src/node_device.c (VIR_FROM_THIS): Define to VIR_FROM_NODEDEV.
* src/sexpr.c (VIR_FROM_THIS): Define to VIR_FROM_SEXPR.
* po/POTFILES.in: remove src/sexpr.c and src/lxc_conf.c
2009-01-29 12:10:32 +00:00
Daniel P. Berrange
1b745219c7 Remove use of non-reentrant POSIX apis 2009-01-22 19:41:48 +00:00
Daniel P. Berrange
437ac354fc Make error reporting threadsafe by avoiding strerror 2009-01-20 17:13:33 +00:00
Daniel Veillard
25415eb104 * src/qemu_driver.c: remove a warning when printing a file offset
daniel
2009-01-20 16:39:35 +00:00
Daniel Veillard
6d004d3f8a * src/domain_conf.h src/qemu_driver.c: use monitor fd for QEmu/KVM
domain shutdown and read saved vm status on libvirtd startup,
  last 2 patches from Guido Günther finishing up the surviving the
  libvirt daemon restart
daniel
2009-01-20 15:52:11 +00:00
Guido Günther
8dfbfe3145 daemonize qemu processes 2009-01-19 21:55:54 +00:00
Daniel P. Berrange
4dac0a1105 Generic internal threads API 2009-01-15 19:56:05 +00:00
Guido Günther
8af87ea251 don't emulate snprintf 2009-01-11 11:21:29 +00:00
Guido Günther
4275be68fb split out opening of the qemu logfile 2009-01-11 11:18:31 +00:00
Guido Günther
46971d5ed7 pass flags argument to all virDomain*DefParse* functions 2009-01-08 13:54:20 +00:00
Daniel Veillard
fbba4423e9 * src/libvirt_private.syms src/qemu_driver.c src/test.c
src/uml_driver.c src/util.c src/util.h src/xen_unified.c:
  unify hostname lookup using virGetHostname convenience function,
  patch by David Lutterkort
daniel
2009-01-07 10:43:16 +00:00
Guido Günther
ffafc252dd trivial cleanups 2009-01-06 17:20:27 +00:00
Guido Günther
043d702f02 use virAsprintf instead of asprintf 2008-12-23 13:03:29 +00:00
Guido Günther
5614e868e1 save and remove kvm/qemu domain status 2008-12-20 13:17:49 +00:00
Guido Günther
ecd25f5262 fix device hotplug 2008-12-18 16:49:49 +00:00
Guido Günther
830ba76c3e let qemu/kvm instances write a pid file 2008-12-18 15:22:49 +00:00
Daniel P. Berrange
b5259e7e11 Fix domain events callback type (John Levon) 2008-12-17 21:48:20 +00:00
Daniel P. Berrange
7e58aaa7ae Remove use of anonymous unions for non-GCC (John Levon) 2008-12-17 18:12:07 +00:00
Cole Robinson
0e459cbdfb Sanitize qemu monitor reads. 2008-12-16 22:34:13 +00:00
Guido Günther
54f4ed6ba1 logrotate qemu monitor logs 2008-12-09 20:22:39 +00:00
Daniel P. Berrange
abb02bd18b Fix autostart of domains with virtual networks used 2008-12-08 11:18:47 +00:00
Daniel P. Berrange
491b4eab14 Remove unused driver arg from monitor APIs 2008-12-04 22:19:30 +00:00
Daniel P. Berrange
bc898df2c7 QEMU domain event thread safety 2008-12-04 21:09:20 +00:00
Daniel P. Berrange
3527f16a94 Add locking for (nearly complete) thread safety to QEMU driver 2008-12-04 21:06:41 +00:00
Daniel P. Berrange
ea960fb719 Merge all return paths from QEMU driver APIs 2008-12-04 21:04:30 +00:00
Cole Robinson
b9b9c8b020 Increase timeout for initial monitor poll, to prevent a guest from failing to start if it has to wait for a physical cdrom to spin up. 2008-12-04 14:47:12 +00:00
Guido Günther
38b402ce13 also look for /usb/bin/kvm 2008-12-04 10:45:31 +00:00
Daniel P. Berrange
d88d459d7b Allow remote://hostname/ style URIs for automatic driver probe. Fix virGetVersion impl 2008-11-28 12:03:20 +00:00
Daniel P. Berrange
c23ff311fc Fix libnuma use to build with v1 compatability code 2008-11-28 11:20:27 +00:00
Daniel P. Berrange
2c855c1c66 Optional dlopen support for drivers 2008-11-21 12:16:08 +00:00
Daniel P. Berrange
41f14d6ea5 Fix crash due to failure to unregister event callbacks in QEMU driver (David Lively) 2008-11-21 10:17:22 +00:00
Daniel P. Berrange
6d04effac7 Add a virFreeCallback to event loop APIs 2008-11-19 16:24:01 +00:00
Daniel P. Berrange
6d41cb87d3 Change public API for virEventAddHandle to allow multiple registrations per FD 2008-11-19 16:19:36 +00:00
Daniel P. Berrange
3d41e86534 Add a virFreeCallback to virDomainEventRegister (from David Lively) 2008-11-19 15:25:24 +00:00
Daniel P. Berrange
a5e72f9177 Add QEMU driver events for defined/undefined config files 2008-11-17 16:52:32 +00:00
Daniel P. Berrange
d3d54d2fc9 Add domain events detail information 2008-11-17 16:43:00 +00:00
Daniel P. Berrange
618276de19 Push URI probing logic down into individual drivers 2008-11-17 11:44:51 +00:00
Jim Meyering
94359e16d3 avoid format string warnings
* src/openvz_driver.c (ADD_ARG_LIT): Add "%s" arg before _(...).
* src/qemu_driver.c (PCI_ATTACH_OK_MSG): Likewise.
* src/util.c (virExec, virRun): Likewise.
2008-11-14 14:19:37 +00:00
Daniel Veillard
df285bdd8d KVM/QEmu migration support
* qemud/remote.c qemud/remote_dispatch_localvars.h
  qemud/remote_dispatch_proc_switch.h qemud/remote_dispatch_prototypes.h
  qemud/remote_protocol.c qemud/remote_protocol.h
  qemud/remote_protocol.x src/driver.h src/libvirt.c
  src/libvirt_internal.h src/libvirt_sym.version src/lxc_driver.c
  src/openvz_driver.c src/qemu_conf.h src/qemu_driver.c
  src/remote_internal.c src/test.c src/virsh.c: large patch to
  add migration support for KVM/QEmu, based on the work of Rich Jones
  and Chris Lalancette. This introduce a new version of the prepare
  and finish steps of the migration, so changes the driver API and
  a lot of code.
Daniel
2008-11-14 08:42:47 +00:00
Daniel Veillard
df93e1ee24 add new logging module, and move existing definitions there
* src/logging.c src/logging.h proxy/Makefile.am proxy/libvirt_proxy.c
  src/Makefile.am src/cgroup.c src/datatypes.c src/domain_event.c
  src/internal.h src/libvirt.c src/lxc_container.c src/lxc_controller.c
  src/lxc_driver.c src/proxy_internal.c src/qemu_driver.c
  src/remote_internal.c src/storage_backend_disk.c src/util.c
  src/veth.c src/xen_internal.c src/xen_unified.c src/xend_internal.c:
  add new logging module, and move existing definitions there
Daniel
2008-11-06 16:36:07 +00:00
Jim Meyering
7271a92bec plug two leaks and fix a diagnostic
* src/qemu_conf.c (qemudLoadDriverConfig): Don't leak ->vncListen.
Fix an erroneous copy-and-pasted diagnostic.
* src/qemu_driver.c (qemudShutdown): Don't leak another ->vncListen.
2008-11-05 14:24:21 +00:00
Daniel P. Berrange
6ace5a39c3 Move some API declarations out of internal.h & hash.c into dedicated files 2008-11-04 23:22:06 +00:00
Daniel P. Berrange
d714b2afae Move internal error APIs into virterror_internal.h & drop leading __ prefix 2008-11-04 22:30:33 +00:00
Daniel P. Berrange
78439117bc Add support for -uuid and -domid args to QEMU 2008-11-04 22:15:30 +00:00
Daniel Veillard
c1a9be4c1b * src/qemu_driver.c: oops trailing blanks
Daniel
2008-11-03 15:52:55 +00:00
Daniel Veillard
4780a00b14 * src/domain_conf.h src/qemu_driver.c: patch adding hor removal of
scsi/virtio disks for KVM, patch by Guido Günther
daniel
2008-10-29 14:32:40 +00:00
Daniel P. Berrange
bdd50bc7f3 Centralize domain mac address handling in domain_conf.c/util.c 2008-10-24 11:20:08 +00:00
Daniel Veillard
1509b8027f Massive patch adding event APIs by Ben Guthro
* include/libvirt/libvirt.h include/libvirt/libvirt.h.in
  src/libvirt.c src/libvirt_sym.version: new libvirt event entry
  points, big patch provided by Ben Guthro
* Makefile.am configure.in src/driver.h src/event.c src/event.h
  src/internal.h src/libvirt.c src/libvirt_sym.version src/lxc_driver.c
  src/openvz_driver.c src/qemu_conf.h src/qemu_driver.c
  src/remote_internal.c src/storage_backend_fs.c src/test.c
  qemud/event.c qemud/event.h qemud/mdns.c qemud/qemud.c
  qemud/qemud.h qemud/remote.c qemud/remote_dispatch_localvars.h
  qemud/remote_dispatch_proc_switch.h qemud/remote_dispatch_prototypes.h
  qemud/remote_protocol.c qemud/remote_protocol.h
  qemud/remote_protocol.x proxy/Makefile.am python/generator.py:
  Not much is left untouched by the patch adding the events support
* docs/libvirt-api.xml docs/libvirt-refs.xml
  docs/html/libvirt-libvirt.html: regenerated the docs
* examples/domain-events/events-c/Makefile.am
  examples/domain-events/events-c/event-test.c: a test example
* AUTHORS: added Ben Guthro
daniel
2008-10-23 13:18:18 +00:00