1. 01 7月, 2015 4 次提交
    • J
      libxl: Set def->vcpus after successfully modifying live vcpu count · 04597f8f
      Jim Fehlig 提交于
      def->vcpus was never updated after successfully changing the live
      vcpu count of a domain. Subsequent queries for vcpu info would
      return incorrect results.  E.g.:
      
      virsh vcpucount test
      maximum      config         4
      maximum      live           4
      current      config         4
      current      live           4
      
      virsh setvcpus test 2
      
      virsh vcpucount test
      maximum      config         4
      maximum      live           4
      current      config         4
      current      live           4
      
      After patch, live current config is reported correctly:
      
      virsh vcpucount test
      maximum      config         4
      maximum      live           4
      current      config         4
      current      live           2
      
      While fixing this, noticed that the live config was not saved
      to cfg->stateDir via virDomainSaveStatus. Save the live config
      and change error handling of virDomainSave{Config,Status} to
      log a message via VIR_WARN, instead of failing the entire
      DomainSetVcpusFlags operation.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      04597f8f
    • J
      libxl: honor domainGetXMLDesc() --inactive flag · 33be48d7
      Jim Fehlig 提交于
      The libxl driver always uses virDomainObj->def when formatting
      the domain XML description.  Use virDomainObj->newDef when
      --inactive flag is set.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      33be48d7
    • J
      libxl: don't remove persistent domain on start failure · 4b53d0d4
      Jim Fehlig 提交于
      libxlDomainCreateXML() would remove a persistent domain if
      libxlDomainStart() failed.  Check if domain is persistent
      before removing.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      4b53d0d4
    • J
      libxl: don't overwrite domain state from statedir config · 29b154e2
      Jim Fehlig 提交于
      When restarting libvirtd and reconnecting to running domains,
      libxlReconnectDomain() would unconditionally set the domain state
      to VIR_DOMAIN_RUNNING, overwriting the state maintained in
      $statedir/<domname>.xml.  A domain in a paused state would have
      the state changed to running, even though it was actually in a
      paused state.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      29b154e2
  2. 24 6月, 2015 1 次提交
    • L
      Improve some errors for openconsole/channel · 898e76f0
      Luyao Huang 提交于
      Functions like virDomainOpenConsole() and virDomainOpenChannel() accept
      NULL as a dev_name parameter.  Try using alias for the error message if
      dev_name is not specified.
      
      Before:
        error: internal error: character device <null> is not using a PTY
      
      After:
        error: internal error: character device serial0 is not using a PTY
      Signed-off-by: NLuyao Huang <lhuang@redhat.com>
      898e76f0
  3. 04 6月, 2015 1 次提交
    • P
      qemu: libxl: vcpupin: Don't reset pinning when pinning to all pcpus · a02a161b
      Peter Krempa 提交于
      In the pre-NUMA ages pinning a vCPU to all pCPUs was eaqual to deleting
      the pinning info. Now it does not entirely work that way. Pinning a vCPU
      to all pCPUs might be a desired operation. Additionally removal of the
      pinning will result into using the default pinning information at the
      next boot which might be different from all vcpus.
      
      This patch removes the false assumption that we should remove the
      pinning after pinning to all vCPUs and tweaks the documentation for
      virsh.
      
      A later patch will implement a new flag for the virDomainPinVcpuFlags
      API that will allow to remove the pinning in a sane way.
      a02a161b
  4. 03 6月, 2015 1 次提交
  5. 01 6月, 2015 1 次提交
    • R
      libxl: load on FreeBSD · f57842ec
      Roman Bogorodskiy 提交于
      The libxl tries to check if it's running in dom0 by parsing
      /proc/xen/capabilities and if that fails it doesn't load.
      
      There's no procfs interface in Xen on FreeBSD, so this check always
      fails.
      
      In addition to checking procfs, check if /dev/xen/xenstored, that's enough to
      check if we're running in dom0 in FreeBSD case.
      f57842ec
  6. 29 5月, 2015 1 次提交
  7. 21 5月, 2015 1 次提交
  8. 18 5月, 2015 1 次提交
    • L
      conf: make virNodeDevCapData an official type · ffc40b63
      Laine Stump 提交于
      For some reason a union (_virNodeDevCapData) that had only been
      declared inside the toplevel struct virNodeDevCapsDef was being used
      as an argument to functions all over the place. Since it was only a
      union, the "type" attribute wasn't necessarily sent with it. While
      this works, it just seems wrong.
      
      This patch creates a toplevel typedef for virNodeDevCapData and
      virNodeDevCapDataPtr, making it a struct that has the type attribute
      as a member, along with an anonymous union of everything that used to
      be in union _virNodeDevCapData. This way we only have to change the
      following:
      
        s/union _virNodeDevCapData */virNodeDevCapDataPtr /
      
      and
      
        s/caps->type/caps->data.type/
      
      This will make me feel less guilty when adding functions that need a
      pointer to one of these.
      ffc40b63
  9. 16 5月, 2015 1 次提交
    • J
      libxl: provide impl for nodeGetSecurityModel · 99a42f3c
      Jim Fehlig 提交于
      Currently, the libxl driver does not support any security drivers.
      When the qemu driver has no security driver configued,
      nodeGetSecurityModel succeeds but returns an empty virSecurityModel
      object.  Do the same in the libxl driver instead of reporting
      
      this function is not supported by the connection driver:
      virNodeGetSecurityModel
      99a42f3c
  10. 30 4月, 2015 1 次提交
  11. 25 4月, 2015 2 次提交
  12. 24 4月, 2015 1 次提交
  13. 22 4月, 2015 1 次提交
  14. 21 4月, 2015 2 次提交
  15. 17 4月, 2015 3 次提交
  16. 25 3月, 2015 5 次提交
    • J
      libxl: remove per-domain libxl_ctx · a5bf06ba
      Jim Fehlig 提交于
      Although needed in the Xen 4.1 libxl days, there is no longer any
      benefit to having per-domain libxl_ctx.  On the contrary, their use
      makes the code unecessarily complicated and prone to deadlocks under
      load.  As suggested by the libxl maintainers, use a single libxl_ctx
      as a handle to libxl instead of per-domain ctx's.
      
      One downside to using a single libxl_ctx is there are no longer
      per-domain log files for log messages emitted by libxl.  Messages
      for all domains will be sent to /var/log/libvirt/libxl/libxl-driver.log.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      a5bf06ba
    • J
      libxl: remove unnecessary libxlDomainEventsRegister · 1cca1d25
      Jim Fehlig 提交于
      This function now only enables domain death events.  Simply call
      libxl_evenable_domain_death() instead of an unnecessary wrapper.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      1cca1d25
    • J
      libxl: move event registration to driver initialization · 109cf8d8
      Jim Fehlig 提交于
      Register a domain event handler with the driver-wide libxl_ctx
      during driver initialization.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      109cf8d8
    • J
      libxl: Move setup of child processing code to driver initialization · 331a02a7
      Jim Fehlig 提交于
      Informing libxl how to handle its child proceses should be done once
      during driver initialization, not once for each domain-specific
      libxl_ctx object.  The related libxl documentation in
      $xen-src/tools/libxl/libxl_event.h even mentions that "it is best to
      call this at initialisation".
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      331a02a7
    • J
      libxl: use driver-wide ctx in fd and timer event handling · 57db83ae
      Jim Fehlig 提交于
      Long ago I incorrectly associated libxl fd and timer registrations
      with per-domain libxl_ctx objects.  When creating a libxlDomainObjPrivate,
      a libxl_ctx is allocated, and libxl_osevent_register_hooks is called
      passing a pointer to the libxlDomainObjPrivate.  When an fd or timer
      registration occurred, the registration callback received the
      libxlDomainObjPrivate, containing the per-domain libxl_ctx.  This
      libxl_ctx was then used when informing libxl about fd events or
      timer expirations.
      
      The problem with this approach is that fd and timer registrations do not
      share the same lifespan as libxlDomainObjPrivate, and hence the per-domain
      libxl_ctx ojects.  The result is races between per-domain libxl_ctx's being
      destoryed and events firing on associated fds/timers, typically manifesting
      as an assert in libxl
      
      libxl_internal.h:2788: libxl__ctx_unlock: Assertion `!r' failed
      
      There is no need to associate libxlDomainObjPrivate objects with libxl's
      desire to use libvirt's event loop.  Instead, the driver-wide libxl_ctx can
      be used for the fd and timer registrations.
      
      This patch moves the fd and timer handling code away from the
      domain-specific code in libxl_domain.c into libxl_driver.c.  While at it,
      function names were changed a bit to better describe their purpose.
      
      The unnecessary locking was also removed since the code simply provides a
      wrapper over the event loop interface.  Indeed the locks may have been
      causing some deadlocks when repeatedly creating/destroying muliple domains.
      There have also been rumors about such deadlocks during parallel OpenStack
      Tempest runs.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      57db83ae
  17. 19 3月, 2015 1 次提交
    • J
      libxl: Don't overwrite errors from xenconfig · bd235cd8
      Jim Fehlig 提交于
      When converting domXML from native, the libxl driver was overwriting
      useful errors from the xenconfig parsing code with a useless, generic
      error.  E.g. "internal error: parsing xm config failed" vs
      "internal error: config value usbdevice was malformed".  Remove the
      redundant (and useless) error reporting in the libxl driver.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      bd235cd8
  18. 16 3月, 2015 5 次提交
    • J
      Replace virDomainVcpuPinDel with virDomainPinDel · 4985dde0
      John Ferlan 提交于
      Since both Vcpu and IOThreads code use the same API's, alter the naming
      of the API's to remove the "Vcpu" specific reference
      4985dde0
    • J
      Replace virDomainVcpuPinAdd with virDomainPinAdd · cacf27f2
      John Ferlan 提交于
      Since both Vcpu and IOThreads code use the same API's, alter the naming
      of the API's to remove the "Vcpu" specific reference
      cacf27f2
    • J
      Convert virDomainPinDefPtr->vcpuid to virDomainPinDefPtr->id · a9f528ab
      John Ferlan 提交于
      Since we're not specifically a vcpu related structure anymore...
      a9f528ab
    • J
      Convert virDomainVcpuPinDefPtr to virDomainPinDefPtr · 59ba7023
      John Ferlan 提交于
      As pointed out by jtomko in his review of the IOThreads pinning code:
      
      http://www.redhat.com/archives/libvir-list/2015-March/msg00495.html
      
      there are some comments sprinkled in indicating IOThreads were using
      the same structure as the VcpuPin code...
      
      This is the first patch of a few that will change the virDomainVcpuPin*
      structures and code to just virDomainPin* - starting with the data
      structure naming...
      59ba7023
    • P
      conf: Replace access to def->mem.max_balloon with accessor functions · 4f9907cd
      Peter Krempa 提交于
      As there are two possible approaches to define a domain's memory size -
      one used with legacy, non-NUMA VMs configured in the <memory> element
      and per-node based approach on NUMA machines - the user needs to make
      sure that both are specified correctly in the NUMA case.
      
      To avoid this burden on the user I'd like to replace the NUMA case with
      automatic totaling of the memory size. To achieve this I need to replace
      direct access to the virDomainMemtune's 'max_balloon' field with
      two separate getters depending on the desired size.
      
      The two sizes are needed as:
      1) Startup memory size doesn't include memory modules in some
      hypervisors.
      2) After startup these count as the usable memory size.
      
      Note that the comments for the functions are future aware and document
      state that will be present after a few later patches.
      4f9907cd
  19. 14 3月, 2015 1 次提交
  20. 13 3月, 2015 1 次提交
    • J
      Introduce virBitmapIsBitSet · 22fd3ac3
      Ján Tomko 提交于
      A helper that never returns an error and treats bits out of bitmap range
      as false.
      
      Use it everywhere we use ignore_value on virBitmapGetBit, or loop over
      the bitmap size.
      22fd3ac3
  21. 06 3月, 2015 1 次提交
    • J
      libxl: remove unneeded cleanup_unlock label · 3b7f5895
      Jim Fehlig 提交于
      In the old days of a global driver lock, it was necessary to unlock
      the driver after a domain restore operation.  When the global lock
      was removed from the driver, some remnants were left behind in
      libxlDomainRestoreFlags.  Remove this unneeded (and incorrect) code.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      3b7f5895
  22. 06 2月, 2015 1 次提交
  23. 27 1月, 2015 1 次提交
    • D
      Removing probing of secondary drivers · 55ea7be7
      Daniel P. Berrange 提交于
      For stateless, client side drivers, it is never correct to
      probe for secondary drivers. It is only ever appropriate to
      use the secondary driver that is associated with the
      hypervisor in question. As a result the ESX & HyperV drivers
      have both been forced to do hacks where they register no-op
      drivers for the ones they don't implement.
      
      For stateful, server side drivers, we always just want to
      use the same built-in shared driver. The exception is
      virtualbox which is really a stateless driver and so wants
      to use its own server side secondary drivers. To deal with
      this virtualbox has to be built as 3 separate loadable
      modules to allow registration to work in the right order.
      
      This can all be simplified by introducing a new struct
      recording the precise set of secondary drivers each
      hypervisor driver wants
      
      struct _virConnectDriver {
          virHypervisorDriverPtr hypervisorDriver;
          virInterfaceDriverPtr interfaceDriver;
          virNetworkDriverPtr networkDriver;
          virNodeDeviceDriverPtr nodeDeviceDriver;
          virNWFilterDriverPtr nwfilterDriver;
          virSecretDriverPtr secretDriver;
          virStorageDriverPtr storageDriver;
      };
      
      Instead of registering the hypervisor driver, we now
      just register a virConnectDriver instead. This allows
      us to remove all probing of secondary drivers. Once we
      have chosen the primary driver, we immediately know the
      correct secondary drivers to use.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      55ea7be7
  24. 17 1月, 2015 1 次提交
    • A
      libxl: Set path to console on domain startup. · 368042cf
      Anthony PERARD 提交于
      The path to the pty of a Xen PV console is set only in
      virDomainOpenConsole. But this is done too late. A call to
      virDomainGetXMLDesc done before OpenConsole will not have the path to
      the pty, but a call after OpenConsole will.
      
      e.g. of the current issue.
      Starting a domain with '<console type="pty"/>'
      Then:
      virDomainGetXMLDesc():
        <devices>
          <console type='pty'>
            <target type='xen' port='0'/>
          </console>
        </devices>
      virDomainOpenConsole()
      virDomainGetXMLDesc():
        <devices>
          <console type='pty' tty='/dev/pts/30'>
            <source path='/dev/pts/30'/>
            <target type='xen' port='0'/>
          </console>
        </devices>
      
      The patch intend to have the TTY path on the first call of GetXMLDesc.
      This is done by setting up the path at domain start up instead of in
      OpenConsole.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1170743Signed-off-by: NAnthony PERARD <anthony.perard@citrix.com>
      368042cf
  25. 16 1月, 2015 1 次提交