1. 14 12月, 2009 13 次提交
    • J
      Fix use of virEventAddHandleImpl() · a645c8f0
      Jiri Denemark 提交于
      src/node_device/node_device_udev.c was using a function available only
      on the daemon code, fix this and use the function available globally
      
      * src/node_device/node_device_udev.c: replace use of virEventAddHandleImpl
        by virEventAddHandle
      a645c8f0
    • M
      Cleanup temporary #define after use · 057ad3a2
      Matthew Booth 提交于
      * src/qemu/qemu_driver.c: #undef LOOKUP_PTYS after use in
        qemudFindCharDevicePTYsMonitor()
      057ad3a2
    • C
      nodedev: Add removable storage 'media_label' prop · deae2bb5
      Cole Robinson 提交于
      Provides the CDROM label for current media. Only implemented for the
      udev backend.
      deae2bb5
    • D
      expose SR IOV physical/virtual function relationships · a010165d
      Dave Allan 提交于
      exposes the relationships between physical
      and virtual functions on SR IOV capable devices.
      a010165d
    • P
      Fix possible NULL pointer dereference · 921d2225
      Paolo Bonzini 提交于
      If there are no references remaining to the object, vm is set to NULL
      and vm->persistent cannot be accessed.  Fixed by this trivial patch.
      
      * src/qemu/qemu_driver.c (qemudDomainCoreDump): Avoid possible
        NULL pointer dereference on --crash dump.
      921d2225
    • P
      add --live support to "virsh dump" · 1fb7af40
      Paolo Bonzini 提交于
      This is trivial for QEMU since you just have to not stop the vm before
      starting the dump.  And for Xen, you just pass the flag down to xend.
      
      * include/libvirt/libvirt.h.in (virDomainCoreDumpFlags): Add VIR_DUMP_LIVE.
      * src/qemu/qemu_driver.c (qemudDomainCoreDump): Support live dumping.
      * src/xen/xend_internal.c (xenDaemonDomainCoreDump): Support live dumping.
      * tools/virsh.c (opts_dump): Add --live. (cmdDump): Map it to VIR_DUMP_LIVE.
      1fb7af40
    • P
      add --crash support to "virsh dump" · b927aed8
      Paolo Bonzini 提交于
      This patch adds the --crash option (already present in "xm dump-core")
      to "virsh dump".  virDomainCoreDump already has a flags argument, so
      the API/ABI is untouched.
      
      * include/libvirt/libvirt.h.in (virDomainCoreDumpFlags): New flag for
        CoreDump
      * src/test/test_driver.c (testDomainCoreDump): Do not crash
        after dump unless VIR_DUMP_CRASH is given.
      * src/qemu/qemu_driver.c (qemudDomainCoreDump): Shutdown the domain
        instead of restarting it if --crash is passed.
      * src/xen/xend_internal.c (xenDaemonDomainCoreDump): Support --crash.
      * tools/virsh.c (opts_dump): Add --crash.
        (cmdDump): Map it to flags for virDomainCoreDump and pass them.
      b927aed8
    • P
      fix various breakages in qemu Dump command · f509e162
      Paolo Bonzini 提交于
      1) qemuMigrateToCommand uses ">>" so we have to truncate the file
      before starting the migration;
      
      2) the command wasn't updated to chown the driver and set/restore
      the security lavels;
      
      3) the VM does not have to be resumed if migration fails;
      
      4) the file is not removed when migration fails.
      
      * src/qemu/qemu_driver.c (qemuDomainCoreDump): Truncate file before
        dumping, set/restore ownership and security labels for the file.
      f509e162
    • D
      Fix a couple of problems in last patch · a7d1eb3c
      Daniel Veillard 提交于
      Those were pointed by DanB in his review but not yet fixed
      
      * src/qemu/qemu_driver.c: qemudWaitForMonitor() use EnterMonitorWithDriver()
        and ExitMonitorWithDriver() there
      * src/qemu/qemu_monitor_text.c: checking fro strdu failure and hash
        table add error in qemuMonitorTextGetPtyPaths()
      a7d1eb3c
    • M
      Get QEMU pty paths from the monitor · 60e8977f
      Matthew Booth 提交于
      This change makes the QEMU driver get pty paths from the output of the
      monitor 'info chardev' command. This output is structured, and contains
      both the name of the device and the path on the same line. This is
      considerably more reliable than parsing the startup log output, which
      requires the parsing code to know which order QEMU will print pty
      information in.
      
      Note that we still need to parse the log output as the monitor itself
      may be on a pty. This should be rare, however, and the new code will
      replace all pty paths parsed by the log output method once the monitor
      is available.
      
      * src/qemu/qemu_monitor.(c|h) src/qemu_monitor_text.(c|h): Implement
        qemuMonitorGetPtyPaths().
      * src/qemu/qemu_driver.c: Get pty path information using
        qemuMonitorGetPtyPaths().
      60e8977f
    • M
      Extract the assigned pty device for QEmu channels · 033eef43
      Matthew Booth 提交于
      * src/qemu/qemu_driver.c: Parse pty devices for channels
      033eef43
    • M
      Make QEMU driver use -chardev everywhere if available · a8eb010e
      Matthew Booth 提交于
      Change -monitor, -serial and -parallel output to use -chardev if it is
      available.
      * src/qemu/qemu_conf.c: Update qemudBuildCommandLine to use -chardev where
        available.
      * tests/qemuxml2argvtest.c tests/qemuxml2argvdata/: Add -chardev equivalents
        for all current serial and parallel tests.
      a8eb010e
    • R
      Suppress cgroup error message on sucess startup · 2597f8ec
      Ryota Ozaki 提交于
      Even if qemudStartVMDaemon suceeds, an error was logged such as
      'qemuRemoveCgroup:1778 : internal error Unable to find cgroup for'.
      This is because qemudStartVMDaemon calls qemuRemoveCgroup to
      ensure that old cgroup does not remain. This workaround makes
      sense but leaving an error message may confuse users.
      * src/qemu/qemu_driver.c: a an option to the function to suppress the
        error being logged
      2597f8ec
  2. 11 12月, 2009 5 次提交
    • M
      Fix memory leak in virStorageBackendCopyToFD · 27ba0ad9
      Matthias Bolte 提交于
      27ba0ad9
    • P
      retrieve paused/running state at migration start · 5de41c06
      Paolo Bonzini 提交于
      This patch fixes the bug where paused/running state is not
      transmitted during migration.  As a result, in the QEMU driver
      for example the machine was always started on the destination
      end.
      
      In order to do so, just read the state and if it is appropriate and
      set the VIR_MIGRATE_PAUSED flag.
      
      * src/libvirt.c (virDomainMigrateVersion1, virDomainMigrateVersion2):
        Automatically add VIR_MIGRATE_PAUSED when appropriate.
      * src/xen/xend_internal.c (xenDaemonDomainMigratePerform): Give a nicer
        error message when migration of paused domains is attempted.
      5de41c06
    • P
      add virsh --suspend arg to migrate command · edc9e78b
      Paolo Bonzini 提交于
      This adds a new flag, VIR_MIGRATE_PAUSED, that mandates pausing
      the migrated VM before starting it.
      
      * include/libvirt/libvirt.h.in (virDomainMigrateFlags): Add VIR_MIGRATE_PAUSED.
      * src/qemu/qemu_driver.c (qemudDomainMigrateFinish2): Handle VIR_MIGRATE_PAUSED.
      * tools/virsh.c (opts_migrate): Add --suspend. (cmdMigrate): Handle it.
      * tools/virsh.pod (migrate): Document it.
      edc9e78b
    • P
      fix migration of paused vms upon failure · ba7d82c6
      Paolo Bonzini 提交于
      This makes a small change on the failed-migration path.  Up to now,
      all VMs that failed non-live migration after the "stop" command
      were restarted.  This must not be done when the VM was paused in
      the first place.
      
      * src/qemu/qemu_driver.c (qemudDomainMigratePerform): Do not restart
        a paused VM that fails migration.  Set paused state after "stop",
        reset it after failure.
      ba7d82c6
    • R
  3. 10 12月, 2009 5 次提交
    • M
      remove iptablesReloadRules() and related code · 4ecf9c65
      Mark McLoughlin 提交于
      We don't use this method of reloading rules anymore, so we can just
      kill the code.
      
      This simplifies things a lot because we no longer need to keep a
      table of the rules we've added.
      
      * src/util/iptables.c: kill iptablesReloadRules()
      4ecf9c65
    • M
      remove all traces of lokkit support · 3b3305d8
      Mark McLoughlin 提交于
      Long ago we tried to use Fedora's lokkit utility in order to register
      our iptables rules so that 'service iptables restart' would
      automatically load our rules.
      
      There was one fatal flaw - if the user had configured iptables without
      lokkit, then we would clobber that configuration by running lokkit.
      
      We quickly disabled lokkit support, but never removed it. Let's do
      that now.
      
      The 'my virtual network stops working when I restart iptables' still
      remains. For all the background on this saga, see:
      
        https://bugzilla.redhat.com/227011
      
      * src/util/iptables.c: remove lokkit support
      
      * configure.in: remove --enable-lokkit
      
      * libvirt.spec.in: remove the dirs used only for saving rules for lokkit
      
      * src/Makefile.am: ditto
      
      * src/libvirt_private.syms, src/network/bridge_driver.c,
        src/util/iptables.h: remove references to iptablesSaveRules
      3b3305d8
    • M
      reload iptables rules on libvirtd restart · 534664c3
      Mark McLoughlin 提交于
      This is the expected behaviour, I think - reloading libvirtd should
      be a subset of restarting it.
      
      Note, we reload the rules after we've determined which networks
      are active (because we only add the rules for active networks)
      and before we start autostart networks (to avoid re-adding the
      rules).
      
      * src/network/bridge_driver.c: reload iptables rules on startup
      534664c3
    • M
      reload iptables rules simply by re-adding them · 98895e93
      Mark McLoughlin 提交于
      Currently, when we add iptables rules, we keep them on a list so that
      we can easily reload them on e.g. 'service libvirtd reload'.
      
      However, we don't save this list to disk, so if libvirtd is restarted
      we lose the ability to reload the rules.
      
      The fix is simple - just re-add the damn things on reload.
      
      Note, we delete the rules before re-adding them, just like the current
      behaviour of iptRulesReload().
      
      * src/network/bridge_driver.c: re-add the iptables rules on reload.
      98895e93
    • M
      Add virBufferFreeAndReset() and replace free() · 1b9d0744
      Matthias Bolte 提交于
      Replace free(virBufferContentAndReset()) with virBufferFreeAndReset().
      Update documentation and replace all remaining calls to free() with
      calls to VIR_FREE(). Also add missing calls to virBufferFreeAndReset()
      and virReportOOMError() in OOM error cases.
      1b9d0744
  4. 09 12月, 2009 3 次提交
    • J
      Plumb domain description tag in xend backend · 723bfda1
      Jim Fehlig 提交于
      xen-unstable changesets 20321 and 20521 added support for
      description in xend domain config.  This patch extends that
      support in xend backend.
      * src/xen/xend_internal.c: add parse and output of domain description
      723bfda1
    • D
      Make QEMU text monitor parsing more robust · cce1998a
      Daniel P. Berrange 提交于
      The QEMU 0.10.0 release (and possibly other 0.10.x) has a bug where
      it sometimes/often forgets to display the initial monitor greeting
      line, soley printing a (qemu).  This in turn confuses the text
      console parsing because it has a '(qemu)' it is not expecting. The
      confusion results in a negative malloc. Bad things follow.
      
      This re-writes the text console handling to be more robust. The key
      idea is that it should only look for a (qemu), once it has seen the
      original command echo'd back. This ensures it'll skip the bogus stray
      (qemu) with broken QEMUs.
      
      * src/qemu/qemu_monitor.c: Add some (disabled) debug code
      * src/qemu/qemu_monitor_text.c: Re-write way command replies
        are detected
      cce1998a
    • D
      Fix virDomainObj ref handling in QEMU driver · 8e7d1495
      Daniel P. Berrange 提交于
      Since the monitor I/O is processed out of band from the main
      thread(s) invoking monitor  commands, the virDomainObj may be
      deleted by the I/O thread. The qemuDomainObjBeginJob takes an
      extra reference to protect against final deletion, but this
      reference is released by the corresponding EndJob call. THus
      after the EndJob call it may not be valid to reference the
      virDomainObj any more. To allow callers to detect this, the
      EndJob call is changed to return the remaining reference count.
      
      * src/conf/domain_conf.c: Make virDomainObjUnref return the
        remaining reference count
      * src/qemu/qemu_driver.c: Avoid referencing virDomainObjPtr
        after qemuDomainObjEndJob if it has been deleted.
      8e7d1495
  5. 08 12月, 2009 14 次提交
    • D
      Avoid an type-punned pointer aliasing pbm · 2b2dae81
      Daniel Veillard 提交于
      Fix this warning, there is no need to use an intermediate,
      different array pointer.
      network.c: In function 'getIPv6Addr':
      network.c:50: warning: dereferencing type-punned pointer will break strict-aliasing rules
      * src/util/network.c: avoid an intermediary pointer cast
      2b2dae81
    • D
      Hook up JSON monitor to emit basic lifecycle events · 421d9950
      Daniel P. Berrange 提交于
      * src/qemu/qemu_monitor_json.c: Hook up reset, shutdown,
        poweroff and stop events
      421d9950
    • D
      Add QEMU monitor callbacks for basic lifecycle events · 89832303
      Daniel P. Berrange 提交于
      * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h: Add callbacks
        for reset, shutdown, poweroff and stop events. Add convenience
        methods for emiting those events
      89832303
    • D
      Switch over to passing a callback table to QEMU monitor · e9f4c943
      Daniel P. Berrange 提交于
      With addition of events there will be alot of callbacks.
      To avoid having to add many APIs to register callbacks,
      provide them all at once in a big table
      
      * src/qemu/qemu_driver.c: Pass in a callback table to QEMU
        monitor code
      * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h Replace
        the EOF and disk secret callbacks with a callback table
      e9f4c943
    • D
      Support for JSON mode monitor · 3a4f172f
      Daniel P. Berrange 提交于
      Initial support for the new QEMU monitor protocol  using JSON
      as the data encoding format instead of plain text
      
      * po/POTFILES.in: Add src/qemu/qemu_monitor_json.c
      * src/qemu/qemu_conf.c, src/qemu/qemu_conf.h: Hack to turn on QMP
        mode. Replace with a version number check on >= 0.12 later
      * src/qemu/qemu_monitor.c: Delegate to json monitor if enabled
      * src/qemu/qemu_monitor_json.c, src/qemu/qemu_monitor_json.h: Add
        impl of QMP protocol
      * src/Makefile.am: Add src/qemu/qemu_monitor_json.{c,h}
      3a4f172f
    • D
      Introduce callbacks for serializing domain object private data to XML · c5358c0e
      Daniel P. Berrange 提交于
      Now that drivers are using a private domain object state blob,
      the virDomainObjFormat/Parse methods are no longer able to
      directly serialize all neccessary state to/from XML. It is
      thus neccessary to introduce a pair of callbacks fo serializing
      private state.
      
      The code for serializing vCPU PIDs and the monitor device
      config can now move out of domain_conf.c and into the
      qemu_driver.c where they belong.
      
      * src/conf/capabilities.h: Add callbacks for serializing private
        state to/from XML
      * src/conf/domain_conf.c, src/conf/domain_conf.h: Remove the
        monitor, monitor_chr, monitorWatch, nvcpupids and vcpupids
        fields from virDomainObjPtr. Remove code that serialized
        those fields
      * src/libvirt_private.syms: Export virXPathBoolean
      * src/qemu/qemu_driver.c: Add callbacks for serializing monitor
        and vcpupid data to/from XML
      * src/qemu/qemu_monitor.h, src/qemu/qemu_monitor.c: Pass monitor
        char device config into qemuMonitorOpen directly.
      c5358c0e
    • D
      Switch LXC driver to use a private data blob for virDomainObj state · e4b07fd6
      Daniel P. Berrange 提交于
      * src/lxc/lxc_driver.c: Introduce lxcDomainObjPrivate for storing
        monitor device state
      e4b07fd6
    • D
      Switch UML driver to use a private data blob for virDomainObj state · f248c965
      Daniel P. Berrange 提交于
      * src/uml/uml_driver.c: Introduce umlDomainObjPrivateData for storing
        monitor device state. Remove unneccessary VIR_FREE on vcpupids
      f248c965
    • D
      Pull code to start CPUs executing out of qemudInitCpuAffinity() · 5697aa84
      Daniel P. Berrange 提交于
      The code to start CPUs executing has nothing todo with CPU
      affinity masks, so pull it out of the qemudInitCpuAffinity()
      method and up into qemudStartVMDaemon()
      
      * src/qemu/qemu_driver.c: Pull code to start CPUs executing out
        of qemudInitCpuAffinity()
      5697aa84
    • D
      Add a 'format' arg to qemuMonitorChangeMedia() since JSON will support it · 8c12b20c
      Daniel P. Berrange 提交于
      The current QEMU disk media change does not support setting the
      disk format. The new JSON monitor will support this, so add an
      extra parameter to pass this info in
      
      * src/qemu/qemu_driver.c: Pass in disk format when changing media
      * src/qemu/qemu_monitor.h, src/qemu/qemu_monitor.c,
        src/qemu/qemu_monitor_text.c, src/qemu/qemu_monitor_text.h:
        Add a 'format' arg to qemuMonitorChangeMedia()
      8c12b20c
    • D
      Fix migration cancellation for QEMU · 3fa3cff7
      Daniel P. Berrange 提交于
      * src/qemu/qemu_monitor_text.c: Add missing underscore in the
        migrate_cancel monitor command impl
      3fa3cff7
    • D
      Move qemuMonitorEscape + migrate status enum into shared monitor code · fa1e4759
      Daniel P. Berrange 提交于
      The qemuMonitorEscape() method, and the VIR_ENUM for migration
      status will be needed by the JSON monitor too, so move that code
      into the shared qemu_monitor.c file instead of qemu_monitor_text.c
      
      * src/qemu/qemu_monitor.h: Declare qemuMonitorMigrationStatus enum
        and qemuMonitorEscapeArg and qemuMonitorEscapeShell methods
      * src/qemu/qemu_monitor.c: Implement qemuMonitorMigrationStatus enum
        and qemuMonitorEscapeArg and qemuMonitorEscapeShell methods
      * src/qemu/qemu_monitor_text.c: Remove above methods/enum
      fa1e4759
    • D
      Fix crash when deleting monitor while a command is in progress · 79533da1
      Daniel P. Berrange 提交于
      If QEMU shuts down while we're in the middle of processing a
      monitor command, the monitor will be freed, and upon cleaning
      up we attempt to do  qemuMonitorUnlock(priv->mon) when priv->mon
      is NULL.
      
      To address this we introduce proper reference counting into
      the qemuMonitorPtr object, and hold an extra reference whenever
      executing a command.
      
      * src/qemu/qemu_driver.c: Hold a reference on the monitor while
        executing commands, and only NULL-ify the priv->mon field when
        the last reference is released
      * src/qemu/qemu_monitor.h, src/qemu/qemu_monitor.c: Add reference
        counting to handle safe deletion of monitor objects
      79533da1
    • G
      udev_device_get_devpath might return NULL · 1f604116
      Guido Günther 提交于
      Fix crash on strdup in that case.
      1f604116