1. 02 11月, 2012 11 次提交
    • P
      conf: net: Fix helper for applying new network definition · 947230fb
      Peter Krempa 提交于
      When there's no new definition the helper overwrote the old one with
      NULL.
      947230fb
    • J
      build: Do not ignore logging.c in sc_prohibit_mkstemp · d055498d
      Jiri Denemark 提交于
      Now that the offending code was removed, we may remove this as well.
      d055498d
    • D
      Remove a chunk which should not have been pushed as part of 1.0.0 · bd0cb27c
      Daniel Veillard 提交于
      I didn't noticed that that small old patch was still applied locally
      bd0cb27c
    • M
      logging.c: Properly indent and ignore one syntax-check rule · 30b398d5
      Michal Privoznik 提交于
      With our fix of mkostemp (pushed as 2b435c15) we define a macro
      to compile with uclibc. However, this definition is conditional
      and thus needs to be properly indented. Moreover, with this definition
      sc_prohibit_mkstemp syntax-check rule keeps yelling:
      
        src/util/logging.c:63:# define mkostemp(x,y) mkstemp(x)
        maint.mk: use mkostemp with O_CLOEXEC instead of mkstemp
      
      Therefore we should ignore this file for this rule.
      30b398d5
    • G
      qemu: use default machine type if missing it in qemu command line · 1851a0c8
      Guannan Ren 提交于
      BZ:https://bugzilla.redhat.com/show_bug.cgi?id=871273
      when using virsh qemu-attach to attach an existing qemu process,
      if it misses the -M option in qemu command line, libvirtd crashed
      because the NULL value of def->os.machine in later use.
      
      Example:
      /usr/libexec/qemu-kvm -name foo \
                            -cdrom /var/lib/libvirt/images/boot.img \
                            -monitor unix:/tmp/demo,server,nowait \
      
      error: End of file while reading data: Input/output error
      error: Failed to reconnect to the hypervisor
      
      This patch tries to set default machine type if the value of
      def->os.machine is still NULL after qemu command line parsing.
      1851a0c8
    • D
      Release of libvirt-1.0.0 · 2b435c15
      Daniel Veillard 提交于
      * configure.ac docs/news.html.in libvirt.spec.in: update for the new release
      * po/*.po*: update from transifex, a lot of added support e.g. Indian
        languages, and regenerate
      2b435c15
    • E
      cpumap: optimize for clients that don't need online count · 3d0130cb
      Eric Blake 提交于
      It turns out that calling virNodeGetCPUMap(conn, NULL, NULL, 0)
      is both useful, and with Viktor's patches, common enough to
      optimize.  Since this interface hasn't been released yet, we
      can change the RPC call.
      
      A bit more background on the optimization - learning the cpu count
      is a single file read (/sys/devices/system/cpu/possible), but
      learning the number of online cpus can possibly trigger a file
      read per cpu, depending on the age of the kernel, and all wasted
      if the caller passed NULL for both arguments.
      
      * src/nodeinfo.c (nodeGetCPUMap): Avoid bitmap when not needed.
      * src/remote/remote_protocol.x (remote_node_get_cpu_map_args):
      Supply two separate flags for needed arguments.
      * src/remote/remote_driver.c (remoteNodeGetCPUMap): Update
      caller.
      * daemon/remote.c (remoteDispatchNodeGetCPUMap): Likewise.
      * src/remote_protocol-structs: Regenerate.
      3d0130cb
    • D
      qemu: QMP capabilities support starts with 1.2 · ba804d9f
      Doug Goldstein 提交于
      Per the code comment in qemuCapsInitQMPBasic() and commit 43e23c73, we
      should only use QMP for capabilities probing starting with 1.2 and
      newer.  The old code had dead logic that probed on 1.0 and newer.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      ba804d9f
    • D
      Linux Containers are not allowed to create device nodes. · 2e03b08e
      Dan Walsh 提交于
      This needs to be done before the container starts. Turning
      off the mknod capability is noticed by systemd, which will
      no longer attempt to create device nodes.
      
      This eliminates SELinux AVC messages and ugly failure messages in the journal.
      2e03b08e
    • S
      qemu: Fix name comparison in qemuMonitorJSONBlockIoThrottleInfo() · 23d47b33
      Stefan Hajnoczi 提交于
      The string comparison logic was inverted and matched the first drive
      that does *not* have the name we search for.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      23d47b33
    • S
      qemu: Keep QEMU host drive prefix in BlkIoTune · 04ee70bf
      Stefan Hajnoczi 提交于
      The QEMU -drive id= begins with libvirt's QEMU host drive prefix
      ("drive-"), which is stripped off in several places two convert between
      host ("-drive") and guest ("-device") device names.
      
      In the case of BlkIoTune it is unnecessary to strip the QEMU host drive
      prefix because we operate on "info block"/"query-block" output that uses
      host drive names.
      
      Stripping the prefix incorrectly caused string comparisons to fail since
      we were comparing the guest device name against the host device name.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      04ee70bf
  2. 01 11月, 2012 9 次提交
  3. 31 10月, 2012 8 次提交
    • M
      gitignore: Ignore 'tags' · ffa62d06
      Michal Privoznik 提交于
      ffa62d06
    • M
      qemu: Fix EmulatorPinInfo without emulatorpin · 10c5212b
      Martin Kletzander 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=871312
      
      Recent fixes made almost all the right steps to make emulator pinned
      to the cpuset of the whole domain in case <emulatorpin> isn't
      specified, but qemudDomainGetEmulatorPinInfo still reports all the
      CPUs even when cpuset is specified.  This patch fixes that.
      10c5212b
    • P
      util: Improve error reporting from absolutePathFromBaseFile helper · ca043b8c
      Peter Krempa 提交于
      There are multiple reasons canonicalize_file_name() used in
      absolutePathFromBaseFile helper can fail. This patch enhances error
      reporting from that helper.
      ca043b8c
    • M
      Make non-KVM machines work with QMP probing · 037a49dc
      Martin Kletzander 提交于
      When there is no 'qemu-kvm' binary and the emulator used for a machine
      is, for example, 'qemu-system-x86_64' that, by default, runs without
      kvm enabled, libvirt still supplies '-no-kvm' option to this process,
      even though it does not recognize such option (making the start of a
      domain fail in that case).
      
      This patch fixes building a command-line for QEMU machines without KVM
      acceleration and is based on following assumptions:
      
       - QEMU_CAPS_KVM flag means that QEMU is running KVM accelerated
         machines by default (without explicitly requesting that using a
         command-line option).  It is the closest to the truth according to
         the code with the only exception being the comment next to the
         flag, so it's fixed in this patch as well.
      
       - QEMU_CAPS_ENABLE_KVM flag means that QEMU is, by default, running
         without KVM acceleration and in case we need KVM acceleration it
         needs to be explicitly instructed to do so.  This is partially
         true for the past (this option essentially means that QEMU
         recognizes the '-enable-kvm' option, even though it's almost the
         same).
      037a49dc
    • G
      bugfix: ip6tables rule removal · adaa7ab6
      Gene Czarcinski 提交于
      Three FORWARD chain rules are added and two INPUT chain rules
      are added when a network is started but only the FORWARD chain
      rules are removed when the network is destroyed.
      adaa7ab6
    • E
      maint: log xml during volume creation · 270a9fef
      Eric Blake 提交于
      I noticed this while answering a list question about Java bindings
      of volume creation.  All other functions that take xml logged xmlDesc.
      
      * src/libvirt.c (virStorageVolCreateXML)
      (virStorageVolCreateXMLFrom): Use consistent spelling of xmlDesc,
      and log the argument.
      270a9fef
    • G
    • L
      util: do a better job of matching up pids with their binaries · 7bafe009
      Laine Stump 提交于
      This patch resolves: https://bugzilla.redhat.com/show_bug.cgi?id=871201
      
      If libvirt is restarted after updating the dnsmasq or radvd packages,
      a subsequent "virsh net-destroy" will fail to kill the dnsmasq/radvd
      process.
      
      The problem is that when libvirtd restarts, it re-reads the dnsmasq
      and radvd pidfiles, then does a sanity check on each pid it finds,
      including checking that the symbolic link in /proc/$pid/exe actually
      points to the same file as the path used by libvirt to execute the
      binary in the first place. If this fails, libvirt assumes that the
      process is no longer alive.
      
      But if the original binary has been replaced, the link in /proc is set
      to "$binarypath (deleted)" (it literally has the string " (deleted)"
      appended to the link text stored in the filesystem), so even if a new
      binary exists in the same location, attempts to resolve the link will
      fail.
      
      In the end, not only is the old dnsmasq/radvd not terminated when the
      network is stopped, but a new dnsmasq can't be started when the
      network is later restarted (because the original process is still
      listening on the ports that the new process wants).
      
      The solution is, when the initial "use stat to check for identical
      inodes" check for identity between /proc/$pid/exe and $binpath fails,
      to check /proc/$pid/exe for a link ending with " (deleted)" and if so,
      truncate that part of the link and compare what's left with the
      original binarypath.
      
      A twist to this problem is that on systems with "merged" /sbin and
      /usr/sbin (i.e. /sbin is really just a symlink to /usr/sbin; Fedora
      17+ is an example of this), libvirt may have started the process using
      one path, but /proc/$pid/exe lists a different path (indeed, on F17
      this is the case - libvirtd uses /sbin/dnsmasq, but /proc/$pid/exe
      shows "/usr/sbin/dnsmasq"). The further bit of code to resolve this is
      to call virFileResolveAllLinks() on both the original binarypath and
      on the truncated link we read from /proc/$pid/exe, and compare the
      results.
      
      The resulting code still succeeds in all the same cases it did before,
      but also succeeds if the binary was deleted or replaced after it was
      started.
      7bafe009
  4. 30 10月, 2012 9 次提交
    • P
      cpu: Fix definition of flag smap · 7af929d0
      Peter Krempa 提交于
      A mild case of dyslexia caused that commit
      012f9b19 specifies wrong mask for the
      smap cpu feature flag. This patch fixes that mistake.
      7af929d0
    • P
      nodeinfotest: Delete NUL bytes from test data · f88b076d
      Peter Krempa 提交于
      The test data contained extra \0 bytes after newlines probably due to a
      kernel off-by-one bug.
      f88b076d
    • M
      sanlock: Introduce 'user' and 'group' conf variables · 9af1b30d
      Michal Privoznik 提交于
      through which user set under what permissions does sanlock
      daemon run so libvirt will set the same permissions for
      files exposed to it.
      9af1b30d
    • V
    • V
      qemu: Do not ignore address for USB disks · 8f708761
      Vladislav Bogdanov 提交于
      8f708761
    • M
      esx: Fix connection to ESX 5.1 · bab7752c
      Martin Kletzander 提交于
      After separating 5.x and 5.1 versions of ESX, we forgot to add 5.1
      into the list of allowed connections, so connections to 5.1 fail since
      v1.0.0-rc1-5-g1e7cd395
      bab7752c
    • E
      build: place attributes in correct location · c047f547
      Eric Blake 提交于
      Ever since commit eefb881d, ATTRIBUTE_NONNULL has normally been a
      no-op under gcc (since it tends to cause more bugs than it cures
      given gcc's current lame implementation of the attribute).  However,
      the macro is still useful to Coverity and other static-analysis
      tools, but only if we use it correctly.  Coverity follows gcc's lead
      in accepting function declarations with attributes at the end, but
      function bodies must attach attributes to the return type.  That is,
      these are valid:
      
      void foo(void *arg) ATTRIBUTE_NONNULL(1);
      void ATTRIBUTE_NONNULL(1) foo(void *arg);
      void ATTRIBUTE_NONNULL(1) foo(void *arg) {}
      
      but this is not:
      
      void foo(void *arg) ATTRIBUTE_NONNULL(1) {}
      
      even though you don't get a compile failure until you do static
      analysis.  Bug introduced in commit 80533ca2, with these symptoms:
      
      nodeinfo.c:206: error: expected ',' or ';' before '{' token
      cc1: warning: unrecognized command line option "-Wno-suggest-attribute=const"
      cc1: warning: unrecognized command line option "-Wno-suggest-attribute=pure"
      make[3]: *** [libvirt_driver_la-nodeinfo.lo] Error 1
      
      * src/nodeinfo.c (virNodeParseNode): Fix syntax error when
      non-null attribute is in use.
      c047f547
    • E
      build: fix linking with systemtap probes · a047a24d
      Eric Blake 提交于
      Commit 34e8f63a altered virfile.o to drag in additional symbols,
      which in turn led to pulling in other .o files and eventually causing
      a link failure when systemtap probes are enabled, such as:
      
      ./.libs/libvirt_util.a(libvirt_util_la-event_poll.o): In function `virEventPollRunOnce':
      /home/dummy/libvirt/src/util/event_poll.c:614: undefined reference to `libvirt_event_poll_run_semaphore'
      ./.libs/libvirt_util.a(libvirt_util_la-event_poll.o):(.note.stapsdt+0x24): undefined reference to `libvirt_event_poll_add_handle_semaphore'
      
      Even though libvirt_iohelper and libvirt_parthelper don't directly
      use the portion of virfile.o that drags in probing, it was easier
      to satisfy the linker and get the build back up, than to figure out
      whether it is even possible or worth trying to disentangle the mess.
      
      * src/Makefile.am (libvirt_iohelper_LDADD)
      (libvirt_parthelper_LDADD): Use libvirt_probes.lo when needed.
      a047a24d
    • M
      qemu: Report errors from iohelper · 34e8f63a
      Michal Privoznik 提交于
      Currently, we use iohelper when saving/restoring a domain.
      However, if there's some kind of error (like I/O) it is not
      propagated to libvirt. Since it is not qemu who is doing
      the actual write() it will not get error. The iohelper does.
      Therefore we should check for iohelper errors as it makes
      libvirt more user friendly.
      34e8f63a
  5. 29 10月, 2012 3 次提交