1. 29 6月, 2012 2 次提交
    • E
      Fix vm's outbound traffic control problem · 0ac3baee
      Eiichi Tsukata 提交于
      Hello,
      
      This is a patch to fix vm's outbound traffic control problem.
      
      Currently, vm's outbound traffic control by libvirt doesn't go well.
      This problem was previously discussed at libvir-list ML, however
      it seems that there isn't still any answer to the problem.
      http://www.redhat.com/archives/libvir-list/2011-August/msg00333.html
      
      I measured Guest(with virtio-net) to Host TCP throughput with the
      command "netperf -H".
      Here are the outbound QoS parameters and the results.
      
      outbound average rate[kilobytes/s] : Guest to Host throughput[Mbit/s]
      ======================================================================
      1024  (8Mbit/s)                    : 4.56
      2048  (16Mbit/s)                   : 3.29
      4096  (32Mbit/s)                   : 3.35
      8192  (64Mbit/s)                   : 3.95
      16384 (128Mbit/s)                  : 4.08
      32768 (256Mbit/s)                  : 3.94
      65536 (512Mbit/s)                  : 3.23
      
      The outbound traffic goes down unreasonably and is even not controled.
      
      The cause of this problem is too large mtu value in "tc filter" command run by
      libvirt. The command uses burst value to set mtu and the burst is equal to
      average rate value if it's not set. This value is too large. For example
      if the average rate is set to 1024 kilobytes/s, the mtu value is set to 1024
      kilobytes. That's too large compared to the size of network packets.
      Here libvirt applies tc ingress filter to Host's vnet(tun) device.
      Tc ingress filter is implemented with TBF(Token Buckets Filter) algorithm. TBF
      uses mtu value to calculate the amount of token consumed by each packet. With too
      large mtu value, the token consumption rate is set too large. This leads to
      token starvation and deterioration of TCP throughput.
      
      Then, should we use the default mtu value 2 kilobytes?
      The anser is No, because Guest with virtio-net device uses 65536 bytes
      as mtu to transmit packets to Host, and the tc filter with the default mtu
      value 2k drops packets whose size is larger than 2k. So, the most packets
      is droped and again leads to deterioration of TCP throughput.
      
      The appropriate mtu value is 65536 bytes which is equal to the maximum value
      of network interface device defined in <linux/netdevice.h>. The value is
      not so large that it causes token starvation and not so small that it
      drops most packets.
      Therefore this patch set the mtu value to 64kb(== 65535 bytes).
      
      Again, here are the outbound QoS parameters and the TCP throughput with
      the libvirt patched.
      
      outbound average rate[kilobytes/s] : Guest to Host throughput[Mbit/s]
      ======================================================================
      1024  (8Mbit/s)                    : 8.22
      2048  (16Mbit/s)                   : 16.42
      4096  (32Mbit/s)                   : 32.93
      8192  (64Mbit/s)                   : 66.85
      16384 (128Mbit/s)                  : 133.88
      32768 (256Mbit/s)                  : 271.01
      65536 (512Mbit/s)                  : 547.32
      
      The outbound traffic conforms to the given limit.
      
      Thank you,
      Signed-off-by: NEiichi Tsukata <eiichi.tsukata.xh@hitachi.com>
      0ac3baee
    • P
      network_conf: Don't free uninitialized pointers while parsing DNS SRV · 96ebb4fe
      Peter Krempa 提交于
      If the user specified invalid protocol type in a network's SRV record
      the error path ended up in freeing uninitialized pointers causing a
      daemon crash.
      
      *network_conf.c: virNetworkDNSSrvDefParseXML(): initialize local
                                                      variables
      96ebb4fe
  2. 28 6月, 2012 5 次提交
  3. 27 6月, 2012 6 次提交
  4. 25 6月, 2012 24 次提交
    • M
      AUTHORS: Update · d092aae1
      Michal Privoznik 提交于
      Latest patchset enabling libvirt on s390(x) was developed by
        Viktor Mihajlovski   <mihajlov@linux.vnet.ibm.com>
        Thang Pham           <thang.pham@us.ibm.com>
      Add them to the AUTHORS file.
      d092aae1
    • T
      S390: Added sysinfo for host on s390(x). · cdea24c5
      Thang Pham 提交于
      In order to retrieve some sysinfo data we need to parse /proc/sysinfo and
      /proc/cpuinfo.
      Signed-off-by: NThang Pham <thang.pham@us.ibm.com>
      Signed-off-by: NViktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
      cdea24c5
    • V
      S390: Fixed core identification for s390 · 2abbffec
      Viktor Mihajlovski 提交于
      For the s390x architecture the sysfs core_id alone is not unique. As a
      result it can happen that libvirt thinks there are less host CPUs available
      than really present.
      Currently, a logical CPU is equivalent to a core for s390x. We therefore
      produce a fake core id from the CPU number.
      Signed-off-by: NViktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
      2abbffec
    • T
      S390: Fixed Parser for /proc/cpuinfo needs to be adapted for your architecture · bf2e40fa
      Thang Pham 提交于
      Minimal CPU "parser" for s390 to avoid compile time warning.
      Signed-off-by: NThang Pham <thang.pham@us.ibm.com>
      Signed-off-by: NViktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
      bf2e40fa
    • T
      S390: CPU support for s390(x) · c7c80804
      Thang Pham 提交于
      Adding CPU encoder/decoder for s390 to avoid runtime error messages.
      Signed-off-by: NThang Pham <thang.pham@us.ibm.com>
      Signed-off-by: NViktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
      c7c80804
    • V
      S390: Override QEMU_CAPS_NO_ACPI for s390x · 6a6c3471
      Viktor Mihajlovski 提交于
      Starting a KVM guest on s390 fails immediately. This is because
      "qemu --help" reports -no-acpi even for the s390(x) architecture but
      -no-acpi isn't supported there.
      Workaround is to remove QEMU_CAPS_NO_ACPI from the capability set
      after the version/capability extraction.
      Signed-off-by: NViktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
      6a6c3471
    • W
      storage backend rbd: Do not prefix rbd: on volume names. · 97485bd0
      Wido den Hollander 提交于
      We used to prefix 'rbd:' to volume names, this is not necessary.
      
      Qemu takes RBD devices in this way, like: qemu -drive rbd:pool/image
      
      When attaching a network disk like RBD to a guest we however do not use this prefix.
      
      Currently you can't map a RBD volume name directly to a domain without removing the prefix.
      Signed-off-by: NWido den Hollander <wido@widodh.nl>
      97485bd0
    • O
      qemu: Improve error if setmem fails for lacking of balloon support · 968b6c60
      Osier Yang 提交于
      "cannot set memory of an active domain" is misleading, it sounds
      like setting memory of active domain is not supported.
      968b6c60
    • D
      Include the default listen address in the live guest XML · d7f9d827
      Daniel P. Berrange 提交于
      If no 'listen' attribute or <listen> element is set in the
      guest XML, the default driver configured listen address is
      used. There is no way to client applications to determine
      what this address is though. When starting the guest, we
      should update the live XML to include this default listen
      address
      d7f9d827
    • M
      storage: Introduce --inactive for pool-dumpxml · 8d27005b
      Michal Privoznik 提交于
      Storage is one of the last domains in libvirt where we don't fully
      utilize inactive and live XML. Okay, it might be because we don't
      have support for that. So implement such support. However, we need
      to fallback when talking to old daemon which doesn't support this
      new flag called VIR_STORAGE_XML_INACTIVE.
      8d27005b
    • M
      storage: Switch to new def on pool-destroy · 803dc0a5
      Michal Privoznik 提交于
      Currently, we share the idea of old & new def with domains. Users can
      *-edit an object (domain, pool) which spawns a new internal
      representation for them. This is referenced via
      {domainObj,poolObj}->newDef [compared to ->def]. However, for pool we
      were never overwriting def with newDef. This must be done on
      pool-destroy (like we do analogically in domain detroy).
      803dc0a5
    • M
      sanlock: Properly indent · 85ce9825
      Michal Privoznik 提交于
      One of latest patches (0fce94fe) didn't properly indented #define
      making syntax-check fail.
      85ce9825
    • D
      Fix compilation on older sanlock · 0fce94fe
      Daniel Veillard 提交于
      Temporary fix since compilation broke with older version of
      sanlock following acbd4965
      0fce94fe
    • D
      Remove stray debug fprintf in XML parser · 9273e07f
      Daniel P. Berrange 提交于
      9273e07f
    • D
      Support bind mounting host files, as well as directories in LXC · 465c055f
      Daniel J Walsh 提交于
      Currently libvirt-lxc checks to see if the destination exists and is a
      directory.  If it is not a directory then the mount fails.  Since
      libvirt-lxc can bind mount files on an inode, this patch is needed to
      allow us to bind mount files on files.  Currently we want to bind mount
      on top of /etc/machine-id, and /etc/adjtime
      
      If the destination of the mount point does not exists, it checks if the
      src is a directory and then attempts to create a directory, otherwise it
      creates an empty file for the destination.  The code will then bind mount
      over the destination.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      465c055f
    • D
      Allow NOCONFIGURE=1 to make autogen.sh skip ./configure · 63f5c83b
      Daniel P. Berrange 提交于
      Sometimes it is useful to re-bootstrap libvirt without running
      through a ./configure invocation immediately. eg if you want
      to run ./configure for Mingw32 rather than native.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      63f5c83b
    • D
      Fix unused parameters / functions in virsh on Win32 · 3b9ca940
      Daniel P. Berrange 提交于
      The vshPrintRaw function is not used on Win32, and neither
      is the 'msg' parameter of vshAskReedit. Change the nesting
      of #ifdef WIN32 conditionals to address this
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      3b9ca940
    • D
      Update to latest GNULIB to fix compat with Mingw64 toolchain · db835b7b
      Daniel P. Berrange 提交于
      On both x86_64-w64-mingw32 and i686-w64-mingw32 there were
      the following warnings/errors:
      
        CC     fstat.lo
      ../../../gnulib/lib/fstat.c:27:0: warning: "stat" redefined [enabled by default]
      In file included from ./sys/stat.h:32:0,
                       from ../../../gnulib/lib/fstat.c:25:
      /usr/x86_64-w64-mingw32/sys-root/mingw/include/sys/stat.h:258:0: note: this is the location of the previous definition
      ../../../gnulib/lib/fstat.c:28:0: warning: "fstat" redefined [enabled by default]
      In file included from ./sys/stat.h:32:0,
                       from ../../../gnulib/lib/fstat.c:25:
      /usr/x86_64-w64-mingw32/sys-root/mingw/include/sys/stat.h:259:0: note: this is the location of the previous definition
      
        CC     stat.lo
      ../../../gnulib/lib/stat.c:32:0: warning: "stat" redefined [enabled by default]
      In file included from ./sys/stat.h:32:0,
                       from ../../../gnulib/lib/stat.c:27:
      /usr/x86_64-w64-mingw32/sys-root/mingw/include/sys/stat.h:258:0: note: this is the location of the previous definition
      
        CC     stdio-read.lo
      ../../../gnulib/lib/stdio-read.c:102:1: error: redefinition of 'vscanf'
      In file included from ./stdio.h:43:0,
                       from ../../../gnulib/lib/stdio-read.c:21:
      /usr/x86_64-w64-mingw32/sys-root/mingw/include/stdio.h:397:7: note: previous definition of 'vscanf' was here
      ../../../gnulib/lib/stdio-read.c:108:1: error: redefinition of 'vfscanf'
      In file included from ./stdio.h:43:0,
                       from ../../../gnulib/lib/stdio-read.c:21:
      /usr/x86_64-w64-mingw32/sys-root/mingw/include/stdio.h:384:7: note: previous definition of 'vfscanf' was here
      make[3]: *** [stdio-read.lo] Error 1
      make[3]: Leaving directory `/home/berrange/src/virt/libvirt/build/gnulib/lib'
      
      While on x86_64-w64-mingw32 only there was:
      
      In file included from ../../../gnulib/lib/regex.c:69:0:
      ../../../gnulib/lib/regcomp.c: In function 'parse_dup_op':
      ../../../gnulib/lib/regcomp.c:2624:39: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
      ../../../gnulib/lib/regcomp.c: In function 'mark_opt_subexp':
      ../../../gnulib/lib/regcomp.c:3859:19: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      db835b7b
    • D
      winsock2.h must always be included before windows.h · 931b7d19
      Daniel P. Berrange 提交于
      Some GNULIB headers (eg unistd.h) will often need to include
      winsock2.h for various symbols. There is a rule that winsock2.h
      must be included before windows.h. This means that any file
      which does
      
        #ifdef WIN32
        #include <windows.h>
        #endif
        #include <unistd.h>
      
      is potentially broken. A simple rule is that /all/ includes of
      windows.h must be matched with a preceding include of winsock2.h
      regardless of whether unistd.h is used currently
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      931b7d19
    • D
      Switch automated builds to use Mingw64 toolchain instead of Mingw32 · 6a714d31
      Daniel P. Berrange 提交于
      The Mingw32 toolchain is broadly obsoleted by the Mingw64 toolchain.
      The latter has been adopted by Fedora 17 and newer. Maintaining a
      RPM spec for Mingw32 is a needless burden, so switch to a Mingw64
      RPM spec (which provides 32 & 64 bit builds).
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      6a714d31
    • D
      virsh: Use virXPath wrappers for vncdisplay cmd · dcbfd572
      Doug Goldstein 提交于
      Update the vncdisplay command to use the virXPath wrappers as well as
      check if the domain is up rather than using the port set to -1 to mean
      the domain is not up.
      Signed-off-by: NDoug Goldstein <cardoe@cardoe.com>
      dcbfd572
    • D
      Add support for shared sanlock leases · acbd4965
      Daniel P. Berrange 提交于
      A sanlock lease can be marked as shared (rather
      than exclusive)  using SANLK_RES_SHARED flag. This
      adds support for that flag and ensures that in auto
      disk mode, any shared disks use shared leases. This
      also makes any read-only disks be completely
      ignored.
      
      These changes remove the need for the option
      
        ignore_readonly_and_shared_disks
      
      so that is removed
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      acbd4965
    • D
      Add support for guest bind mounts with LXC · 3b1ddec1
      Daniel P. Berrange 提交于
      Currently you can configure LXC to bind a host directory to
      a guest directory, but not to bind a guest directory to a
      guest directory. While the guest container init could do
      this itself, allowing it in the libvirt XML means a stricter
      SELinux policy can be written
      3b1ddec1
    • D
      Add support for RAM filesystems for LXC · 76b644c3
      Daniel P. Berrange 提交于
      Introduce a new syntax for filesystems to allow use of a RAM
      filesystem
      
         <filesystem type='ram'>
            <source usage='10' units='MiB'/>
            <target dir='/mnt'/>
         </filesystem>
      
      The usage units default to KiB to limit consumption of host memory.
      
      * docs/formatdomain.html.in: Document new syntax
      * docs/schemas/domaincommon.rng: Add new attributes
      * src/conf/domain_conf.c: Parsing/formatting of RAM filesystems
      * src/lxc/lxc_container.c: Mounting of RAM filesystems
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      76b644c3
  5. 23 6月, 2012 1 次提交
    • H
      fix a bug of ref count in virnetserver.c · 9c77bf04
      Hu Tao 提交于
      The test of ref count is not protected by lock, which is unsafe because
      the ref count may have been changed by other threads during the test.
      
      This patch fixes this.
      9c77bf04
  6. 22 6月, 2012 2 次提交
    • P
      virsh: Improve error when trying to change vm's cpu count 0 · de924ca9
      Peter Krempa 提交于
      This patch adds a check for the count of processors the user requests
      for the guest machine so that invalid values produce a more helpful
      error message.
      de924ca9
    • J
      Fix deadlock on libvirtd shutdown · 0dda594d
      Jim Fehlig 提交于
      When shutting down libvirtd, the virNetServer shutdown can deadlock
      if there are in-flight jobs being handled by virNetServerHandleJob().
      virNetServerFree() will acquire the virNetServer lock and call
      virThreadPoolFree() to terminate the workers, waiting for the workers
      to finish.  But in-flight workers will attempt to acquire the
      virNetServer lock, resulting in deadlock.
      
      Fix the deadlock by unlocking the virNetServer lock before calling
      virThreadPoolFree().  This is safe since the virNetServerPtr object
      is ref-counted and only decrementing the ref count needs to be
      protected.  Additionally, there is no need to re-acquire the lock
      after virThreadPoolFree() completes as all the workers have
      terminated.
      0dda594d