You need to sign in or sign up before continuing.
  1. 26 1月, 2013 1 次提交
    • E
      conf: avoid NULL deref for pmsuspended domain state · e0642059
      Eric Blake 提交于
      While working with a pmsuspend vs. snapshot issue, I noticed that
      the state file in /var/run/libvirt/qemu/dom.xml contained a rather
      suspicious "(null)" string, which does not round-trip well through
      a libvirtd restart.  Had I been on a platform other than glibc
      where printf("%s",NULL) crashes instead of printing (null), we might
      have noticed the problem much sooner.
      
      And in fixing that problem, I also noticed that we had several
      missing states, because we were #defining several *_LAST names
      to a value _different_ than what they were already given as enums
      in libvirt.h.  Yuck.  I got rid of default: labels in the case
      statements, because they get in the way of gcc's -Wswitch helping
      us ensure we cover all enum values.
      
      * src/conf/domain_conf.c (virDomainStateReasonToString)
      (virDomainStateReasonFromString): Fill in missing domain states;
      rewrite case statement to let compiler enforce checking.
      (VIR_DOMAIN_NOSTATE_LAST, VIR_DOMAIN_RUNNING_LAST)
      (VIR_DOMAIN_BLOCKED_LAST, VIR_DOMAIN_PAUSED_LAST)
      (VIR_DOMAIN_SHUTDOWN_LAST, VIR_DOMAIN_SHUTOFF_LAST)
      (VIR_DOMAIN_CRASHED_LAST): Drop dead defines.
      (VIR_DOMAIN_PMSUSPENDED_LAST): Drop dead define.
      (virDomainPMSuspendedReason): Add missing enum function.
      (virDomainRunningReason, virDomainPausedReason): Add missing enum
      value.
      * src/conf/domain_conf.h (virDomainPMSuspendedReason): Declare
      missing functions.
      * src/libvirt_private.syms (domain_conf.h): Export them.
      e0642059
  2. 25 1月, 2013 11 次提交
    • E
      maint: make it easier to sort syms files · f0aa4935
      Eric Blake 提交于
      I got bit by 'make check' complaining that the sort order I got
      by emacs' sort-lines function differed from expectations.
      
      * src/libvirt_private.syms: Add emacs trailer.
      * src/libvirt_atomic.syms: Likewise.
      * src/libvirt_daemon.syms: Likewise.
      * src/libvirt_esx.syms: Likewise.
      * src/libvirt_libssh2.syms: Likewise.
      * src/libvirt_linux.syms: Likewise.
      * src/libvirt_openvz.syms: Likewise.
      * src/libvirt_sasl.syms: Likewise.
      * src/libvirt_vmx.syms: Likewise.
      * src/libvirt_xenxs.syms: Likewise.
      f0aa4935
    • M
      qemu_monitor: Fix tray-open attribute in query-block · 319ed264
      Michal Privoznik 提交于
      With our code, we fail to query for tray-open attribute currently.
      That's because in HMP it is 'tray-open' and in QMP it's 'tray_open'.
      It always has been. However, we got it exactly the opposite.
      319ed264
    • D
      Fix bogus reporting of KVM support for non-native emulators · c29eafc8
      Daniel P. Berrange 提交于
      A logic bug meant we reported KVM was possible for every
      architecture, merely based on whether the query-kvm command
      exists. We should instead have been doing it based on whether
      the query-kvm command returns 'present: 1'
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      c29eafc8
    • D
      Move QEMU capabilities initialization later in QEMU startup · d7a3700e
      Daniel P. Berrange 提交于
      Currently QEMU capabilities are initialized before the QEMU driver
      sets ownership on its various directories. The upshot is that if
      you change the user/group in the qemu.conf file, libvirtd will fail
      to probe QEMU the first time it is run after the config change.
      Moving QEMU capabilities initialization to after the chown() calls
      fixes this
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      d7a3700e
    • D
      Fix performance & reliabilty of QMP probing · 1b253a10
      Daniel P. Berrange 提交于
      This previous commit
      
        commit 1a50ba2c
        Author: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
        Date:   Mon Nov 26 15:17:13 2012 +0100
      
          qemu: Fix QMP Capabability Probing Failure
      
      which attempted to make sure the QEMU process used for probing
      ran as the right user id, caused serious performance regression
      and unreliability in probing. The -daemonize switch in QEMU
      guarantees that the monitor socket is present before the parent
      process exits. This means libvirtd is guaranteed to be able to
      connect immediately. By switching from -daemonize to the
      virCommandDaemonize API libvirtd was no longer synchronized with
      QEMU's startup process. The result was that the QEMU monitor
      failed to open and went into its 200ms sleep loop. This happened
      for all 25 binaries resulting in 5 seconds worth of sleeping
      at libvirtd startup. In addition sometimes when libvirt connected,
      QEMU would be partially initialized and crash causing total
      failure to probe that binary.
      
      This commit reverts the previous change, ensuring we do use the
      -daemonize flag to QEMU. Startup delay is cut from 7 seconds
      to 2 seconds on my machine, which is on a par with what it was
      prior to the capabilities rewrite.
      
      To deal with the fact that QEMU needs to be able to create the
      pidfile, we switch pidfile location fron runDir to libDir, which
      QEMU is guaranteed to be able to write to.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      1b253a10
    • M
      qemuDomainSendKey: Relax the qemu driver locking · 2eb54c74
      Michal Privoznik 提交于
      Currently, there is no reason to hold qemu driver locked
      throughout whole API execution. Moreover, we can use the
      new qemuDomObjFromDomain() internal API to lookup domain then.
      2eb54c74
    • J
      qemu: escape ipv6 for rbd network disk hosts · c1509ab4
      Josh Durgin 提交于
      Hosts for rbd are ceph monitor daemons. These have fixed IP addresses,
      so they are often referenced by IP rather than hostname for
      convenience, or to avoid relying on DNS. Using IPv4 addresses as the
      host name works already, but IPv6 addresses require rbd-specific
      escaping because the colon is used as an option separator in the
      string passed to qemu.
      
      Escape these colons, and enclose the IPv6 address in square brackets
      so it is distinguished from the port, which is currently mandatory.
      Acked-by: NOsier Yang <jyang@redhat.com>
      Signed-off-by: NJosh Durgin <josh.durgin@inktank.com>
      c1509ab4
    • E
      snapshot: fix state after external snapshot of S3 domain · 339bdd99
      Eric Blake 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=876829 complains that
      if a guest is put into S3 state (such as via virsh dompmsuspend)
      and then an external snapshot is taken, qemu forcefully transitions
      the domain to paused, but libvirt doesn't reflect that change
      internally.  Thus, a user has to use 'virsh suspend' to get libvirt
      back in sync with qemu state, and if the user doesn't know this
      trick, then the guest appears hung.
      
      * src/qemu/qemu_driver.c (qemuDomainSnapshotCreateActiveExternal):
      Track fact that qemu wakes up a suspended domain on migration.
      339bdd99
    • J
      locking: use virStrcpyStatic instead of memcpy · 678e8913
      John Ferlan 提交于
      678e8913
    • J
      python: Fix bindings for virDomainSnapshotGet{Domain,Connect} · 7b35fd71
      Jiri Denemark 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=895882
      
      virDomainSnapshot.getDomain() and virDomainSnapshot.getConnect()
      wrappers around virDomainSnapshotGet{Domain,Connect} were not supposed
      to be ever implemented. The class should contain proper domain() and
      connect() accessors that fetch python objects stored internally within
      the class. While domain() was already provided, connect() was missing.
      
      This patch adds connect() method to virDomainSnapshot class and
      reimplements getDomain() and getConnect() methods as aliases to domain()
      and connect() for backward compatibility.
      7b35fd71
    • D
      Fix crash free'ing securityDriverNames in QEMU driver · bbc663b1
      Daniel P. Berrange 提交于
      The previous fix to avoid leaking securityDriverNames forgot to
      handle the case of securityDriverNames being NULL, leading to
      a crash
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      bbc663b1
  3. 24 1月, 2013 19 次提交
  4. 23 1月, 2013 9 次提交
    • P
      conf: Fix usage of virBitmapParse · bf62e995
      Peter Krempa 提交于
      virNetworkObjUpdateParseFile used ',' as the termination character for
      virBitmapParse. This would break if an non-contiguous range would be
      parsed.
      bf62e995
    • P
      util: Fix docs for virBitmapParse · 4004977f
      Peter Krempa 提交于
      This patch changes the name of the @sep argument to @terminator and
      clarifies it's usage. This patch also explicitly documents that
      whitespace can't be used as @terminator as it is skipped multiple times
      in the implementation.
      4004977f
    • M
      qemu_agent: Ignore expected EOFs · d960d06f
      Michal Privoznik 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=892079
      
      One of my previous patches (f2a4e5f1) tried to fix crashing
      libvirtd on domain detroy. However, we need to copy pattern from
      qemuProcessHandleMonitorEOF() instead of decrementing reference
      counter. The rationale for this is, if qemu process is dying due
      to domain being destroyed, we obtain EOF on both the monitor and
      agent sockets. However, if the exit is expected, qemuProcessStop
      is called, which cleans both agent and monitor sockets up. We
      want qemuAgentClose() to be called iff the EOF is not expected,
      so we don't leak an FD and memory. Moreover, there could be race
      with qemuProcessHandleMonitorEOF() which could have already
      closed the agent socket, in which case we don't want to do
      anything.
      d960d06f
    • J
      rpc: Revert Coverity tag message · dd36cc3f
      John Ferlan 提交于
      Turns out the fix for VIR_FREE made this particular Coverity tag
      unnecessary, so I'm removing it.
      dd36cc3f
    • J
      lxc_process: Avoid passing NULL iface->iname · 73cdac3f
      John Ferlan 提交于
      A followon to commit id: 68dceb63 - if iface->iname is NULL, then
      neither virNetDevOpenvswitchRemovePort() nor virNetDevVethDelete()
      should be called.  Found by Coverity.
      73cdac3f
    • J
      2e774db8
    • J
      7489a9c3
    • D
      Fix nwfilter driver reload/shutdown handling when unprivileged · abbec81b
      Daniel P. Berrange 提交于
      Although the nwfilter driver skips startup when running in a
      session libvirtd, it did not skip reload or shutdown. This
      caused errors to be reported when sending SIGHUP to libvirtd,
      and caused an abort() in libdbus on shutdown due to trying
      to remove a dbus filter that was never added
      abbec81b
    • E
      build: allow virObject to have no parent · 682c79c4
      Eric Blake 提交于
      When building with static analysis enabled, we turn on attribute
      nonnull checking.  However, this caused the build to fail with:
      
      ../../src/util/virobject.c: In function 'virObjectOnceInit':
      ../../src/util/virobject.c:55:40: error: null argument where non-null required (argument 1) [-Werror=nonnull]
      
      Creation of the virObject class is the one instance where the
      parent class is allowed to be NULL.  Making things conditional
      will let us keep static analysis checking for all other .c file
      callers, without breaking the build on this one exception.
      
      * src/util/virobject.c: Define witness.
      * src/util/virobject.h (virClassNew): Use it to force most callers
      to pass non-null parameter.
      682c79c4