1. 30 9月, 2016 6 次提交
    • P
      qemu: vcpu: Clear vcpu order information rather than making it invalid · a88c65e4
      Peter Krempa 提交于
      Certain operations may make the vcpu order information invalid. Since
      the order is primarily used to ensure migration compatibility and has
      basically no other user benefits, clear the order prior to certain
      operations and document that it may be cleared.
      
      All the operations that would clear the order can still be properly
      executed by defining a new domain configuration rather than using the
      helper APIs.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1370357
      a88c65e4
    • P
      qemu: Fix coldplug of vcpus · 80ea1cf6
      Peter Krempa 提交于
      virDomainDefSetVcpus was not designed to handle coldplug of vcpus now
      that we can set state of vcpus individually.
      
      Introduce qemuDomainSetVcpusConfig that properly handles state changes
      of vcpus when coldplugging so that invalid configurations are not
      created.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1375939
      80ea1cf6
    • P
      qemu: process: Enforce 'vcpu' order range to <1,maxvcpus> · 6ff3e650
      Peter Krempa 提交于
      The current code that validates duplicate vcpu order would not work
      properly if the order would exceed def->maxvcpus. Limit the order to the
      interval described.
      6ff3e650
    • P
      qemu: process: Don't use shifted indexes for vcpu order verification · 8924f1b2
      Peter Krempa 提交于
      Allocate a one larger bitmap rather than shifting the indexes back to
      zero.
      8924f1b2
    • P
      qemu: process: Fix off-by-one in vcpu order duplicate error message · 3d5dd289
      Peter Krempa 提交于
      The bitmap indexes for the order duplicate check are shifted to 0 since
      vcpu order 0 is not allowed. The error message doesn't need such
      treating though.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1370360
      3d5dd289
    • L
      docs: correct version requirements for <kvm><hidden='on'/></kvm> · a46aa885
      Laine Stump 提交于
      When support was added for the kvm hidden='on' attribute in commit
      d07116, the version requirement was listed as "2.1.0 (QEMU
      only)". However, this was added when libvirt was at version 1.2.8 - it
      is *QEMU* that must be at version 2.1.0 or later.
      
      This went unnoticed for a very long time (over 2 years). Then a week
      or two ago a new Windows convert in the #virt channel on OFTC was told
      he needed to use this feature (to prevent nvidia drivers in a guest
      from refusing to work due to being run in a virtual machine). There
      was some problem with it being recognized and "someone" (it may have
      been me, or may have been someone else, I don't remember) pointed out
      that the documentation at
      
        http://www.libvirt.org/formatdomain.html
      
      says that it requires libvirt 2.1.0. The next several days were filled
      with agony as a new convert to Linux first tried to upgrade a Linux
      Mint host running their "LTS" version to something newer, then tried
      to install a libvirt build built for Ubuntu onto this, and later back
      to the old LTS Linux Mint. After this he tried building his own
      libvirt from source (with all the expected problems), and finally
      switched to Fedora. In the end it was hours and hours of everybody's
      lives that they will never get back. To now learn that he didn't need
      to do this (his original libvirt version was 1.3.3, so whatever his
      problem was, it was elsewhere) makes the pain all that much worse.
      
      To prevent this from happening again, this simple patch changes the
      version requirement for the kvm hidden attribute from "2.1.0 (QEMU
      only)" to "1.2.8 (QEMU 2.1.0)".
      a46aa885
  2. 29 9月, 2016 6 次提交
    • M
      sanlock: Properly init io_timeout · 5fe66ea3
      Michal Privoznik 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1292984
      
      Hold on to your hats, because this is gonna be wild.
      
      In bd3e16a3 I've tried to expose sanlock io_timeout. What I had
      not realized (because there is like no documentation for sanlock
      at all) was very unusual way their APIs work. Basically, what we
      do currently is:
      
          sanlock_add_lockspace_timeout(&ls, io_timeout);
      
      which adds a lockspace to sanlock daemon. One would expect that
      io_timeout sets the io_timeout for it. Nah! That's where you are
      completely off the tracks. It sets timeout for next lockspace you
      will probably add later. Therefore:
      
         sanlock_add_lockspace_timeout(&ls, io_timeout = 10);
         /* adds new lockspace with default io_timeout */
      
         sanlock_add_lockspace_timeout(&ls, io_timeout = 20);
         /* adds new lockspace with io_timeout = 10 */
      
         sanlock_add_lockspace_timeout(&ls, io_timeout = 40);
         /* adds new lockspace with io_timeout = 20 */
      
      And so on. You get the picture.
      Fortunately, we don't allow setting io_timeout per domain or per
      domain disk. So we just need to set the default used in the very
      first step and hope for the best (as all the io_timeout-s used
      later will have the same value).
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      5fe66ea3
    • M
      m4: Check for sanlock_write_lockspace · 2bca7cec
      Michal Privoznik 提交于
      Currently, we are checking for sanlock_add_lockspace_timeout
      which is good for now. But in a subsequent patch we are going to
      use sanlock_write_lockspace (which sets an initial value for io
      timeout for sanlock). Now, there is no reason to check for both
      functions in sanlock library as the sanlock_write_lockspace was
      introduced in 2.7 release and the one we are currently checking
      for in the 2.5 release. Therefore it is safe to assume presence
      of sanlock_add_lockspace_timeout when sanlock_write_lockspace
      is detected.
      
      Moreover, the macro for conditional compilation is renamed to
      HAVE_SANLOCK_IO_TIMEOUT (as it now encapsulates two functions).
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      2bca7cec
    • M
      lock_driver_sanlock: Avoid global driver variable whenever possible · 78da4296
      Michal Privoznik 提交于
      Global variables are bad, we should avoid using them.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      78da4296
    • M
      qemu: Only use memory-backend-file with NUMA if needed · ff3112f3
      Martin Kletzander 提交于
      If this reminds you of a commit message from around a year ago, it's
      41c2aa72 and yes, we're dealing with
      "the same thing" again.  Or f309db1f and
      it's similar.
      
      There is a logic in place that if there is no real need for
      memory-backend-file, qemuBuildMemoryBackendStr() returns 0.  However
      that wasn't the case with hugepage backing.  The reason for that was
      that we abused the 'pagesize' variable for storing that information, but
      we should rather have a separate one that specifies whether we really
      need the new object for hugepage backing.  And that variable should be
      set only if this particular NUMA cell needs special treatment WRT
      hugepages.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1372153Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      ff3112f3
    • J
      vsh: Write out history on "quit" or "exit" in interactive mode · bcfa2f42
      John Ferlan 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1379895
      
      Introduced by commit id '834c5720'.
      
      During the code motion and creation of vsh.c, the function 'vshDeinit()'
      in the (new) vsh.c was altered from whence it came in virsh.c such that
      calling 'vshReadlineDeinit(ctl)' was conditional on "ctl->imode".
      
      This causes a problem for the interactive running if the "quit" and "exit"
      commands are used because 'cmdQuit' will clear ctl->imode, thus when the
      interactive loop in main() of virsh.c exits because ctl->mode is clear and
      virshDeinit is called which calls vshDeinit, the history file is now not
      written. Conversely, if one had exited the interactive loop via pressing
      <ctrl>D the file would be created because loop control is broken on EOF
      and ctl->imode is not set to false.
      
      This patch will remove the conditional call to vshReadlineDeinit and
      restore the former behaviour.
      bcfa2f42
    • R
      bhyve: chase cpuCompareXML rename · 13aa7984
      Roman Bogorodskiy 提交于
      In commit 7f127ded cpuCompareXML was renamed to virCPUCompareXML,
      so change the bhyve driver to use the new function and thus
      fix the build.
      13aa7984
  3. 28 9月, 2016 7 次提交
    • J
      doc: fix note about Xen credit scheduler · f4332dd2
      Jim Fehlig 提交于
      Commit 6c504d6a added a note to the virsh man page about the
      deprecation of 'cap' and 'weight' settings for the credit
      scheduler. To this day, the default scheduler in Xen is credit
      and it supports setting 'cap' and 'weight'. Remove the deprecation
      notice from the note on the Xen credit scheduler.
      Reported-by: NVolo M. <vm@vovs.net>
      f4332dd2
    • J
      libxl: fix param assignment in domainGetSchedulerParameters · 4c600de7
      Jim Fehlig 提交于
      Due to a copy and paste error, the scheduler 'cap' parameter
      was over-writing the 'weight' parameter when preparing the
      return parameters in libxlDomainGetSchedulerParametersFlags.
      As a result, the scheduler weight was never shown when getting
      schedinfo and setting the weight failed as well
      
      virsh  schedinfo testvm
      Scheduler      : credit
      cap            : 0
      
      virsh  schedinfo testvm --cap 50 --weight 500
      Scheduler      : credit
      error: invalid scheduler option: weight
      
      The obvious fix is to assign the 'caps' parameter to the correct
      item in the parameter list.
      Reported-by: NVolo M. <vm@vovs.net>
      4c600de7
    • J
      bff2f781
    • J
      xenconfig: channels conversion support · 9a683f88
      Joao Martins 提交于
      Add support for formating/parsing libxl channels.
      
      Syntax on xen libxl goes as following:
      channel=["connection=pty|socket,path=/path/to/socket,name=XXX",...]
      Signed-off-by: NJoao Martins <joao.m.martins@oracle.com>
      Acked-by: NJim Fehlig <jfehlig@suse.com>
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      9a683f88
    • J
      libxl: channels support · 719b663f
      Joao Martins 提交于
      And allow libxl to handle channel element which creates a Xen
      console visible to the guest as a low-bandwitdh communication
      channel. If type is PTY we also fetch the tty after boot using
      libxl_channel_getinfo to fetch the tty path. On socket case,
      we autogenerate a path if not specified in the XML. Path autogenerated
      is slightly different from qemu driver: qemu stores also on
      "channels/target" but it creates then a directory per domain with
      each channel target name. libxl doesn't appear to have a clear
      definition of private files associated with each domain, so for
      simplicity we do it slightly different. On qemu each autogenerated
      channel goes like:
      
      channels/target/<domain-name>/<target name>
      
      Whereas for libxl:
      
      channels/target/<domain-name>-<target name>
      
      Should note that if path is not specified it won't persist,
      existing only on live XML, unless user had initially specified it.
      Since support for libxl channels only came on Xen >= 4.5 we therefore
      need to conditionally compile it with LIBXL_HAVE_DEVICE_CHANNEL.
      
      After this patch and having a qemu guest agent:
       $ cat domain.xml | grep -a1 channel | head -n 5 | tail -n 4
       <channel type='unix'>
         <source mode='bind' path='/tmp/channel'/>
         <target type='xen' name='org.qemu.guest_agent.0'/>
       </channel>
      
       $ virsh create domain.xml
       $ echo '{"execute":"guest-network-get-interfaces"}' | socat
       stdio,ignoreeof  unix-connect:/tmp/channel
      
       {"execute":"guest-network-get-interfaces"}
       {"return": [{"name": "lo", "ip-addresses": [{"ip-address-type": "ipv4",
       "ip-address": "127.0.0.1", "prefix": 8}, {"ip-address-type": "ipv6",
       "ip-address": "::1", "prefix": 128}], "hardware-address":
       "00:00:00:00:00:00"}, {"name": "eth0", "ip-addresses":
       [{"ip-address-type": "ipv4", "ip-address": "10.100.0.6", "prefix": 24},
       {"ip-address-type": "ipv6", "ip-address": "fe80::216:3eff:fe40:88eb",
       "prefix": 64}], "hardware-address": "00:16:3e:40:88:eb"}, {"name":
       "sit0"}]}
      Signed-off-by: NJoao Martins <joao.m.martins@oracle.com>
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      719b663f
    • J
      conf: add xen type for channels · 031abbc5
      Joao Martins 提交于
      So far only guestfwd and virtio were supported. Add an additional
      for Xen as libxl channels create a Xen console visible to the guest.
      Signed-off-by: NJoao Martins <joao.m.martins@oracle.com>
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      031abbc5
    • J
      qemu: Fix crash in qemucapsprobe · c2c43912
      Jiri Denemark 提交于
      The qemucapsprobe helper calls virQEMUCapsNewForBinaryInternal with
      caps == NULL, causing the following crash:
      
          Program received signal SIGSEGV, Segmentation fault.
          #0  0x00007ffff788775f in virQEMUCapsInitHostCPUModel
              (qemuCaps=qemuCaps@entry=0x649680, host=host@entry=0x10) at
              src/qemu/qemu_capabilities.c:2969
          #1  0x00007ffff7889dbf in virQEMUCapsNewForBinaryInternal
              (caps=caps@entry=0x0, binary=<optimized out>,
              libDir=libDir@entry=0x4033f6 "/tmp", cacheDir=cacheDir@entry=0x0,
              runUid=runUid@entry=4294967295, runGid=runGid@entry=4294967295,
              qmpOnly=true) at src/qemu/qemu_capabilities.c:4039
          #2  0x0000000000401702 in main (argc=2, argv=0x7fffffffd968) at
              tests/qemucapsprobe.c:73
      
      Caused by v2.2.0-182-g68c70118.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      c2c43912
  4. 27 9月, 2016 7 次提交
  5. 26 9月, 2016 14 次提交