1. 29 7月, 2011 6 次提交
    • E
      xen: make direct call when there is only one subdriver · a1e641a5
      Eric Blake 提交于
      No need to use a for loop if we know there is exactly one client.
      Found by:
      
      for f in $(sed -n 's/.*Drv[^ ]* \([^;]*\);.*/\1/p' src/xen/xen_driver.h)
      do
        git grep "\(\.\|->\)$f\b" src/xen
      done | cat
      
      and looking through the resulting list to see which callback struct
      members are used exactly once.  The next patch will ensure that we
      don't reintroduce uses of these callbacks.
      
      * src/xen/xen_driver.c (xenUnifiedClose): Call close
      unconditionally, to match xenUnifiedOpen.
      (xenUnifiedNodeGetInfo, xenUnifiedDomainCreateXML)
      (xenUnifiedDomainSave, xenUnifiedDomainRestore)
      (xenUnifiedDomainCoreDump, xenUnifiedDomainUpdateDeviceFlags):
      Make direct call to lone implementation.
      * src/xen/xend_internal.h (xenDaemonDomainCoreDump)
      (xenDaemonUpdateDeviceFlags, xenDaemonCreateXML): Add prototypes.
      * src/xen/xend_internal.c (xenDaemonDomainCoreDump)
      (xenDaemonUpdateDeviceFlags, xenDaemonCreateXML): Export.
      a1e641a5
    • E
      xen: reduce callback special cases · 03e5f8bb
      Eric Blake 提交于
      The callback struct is great when iterating through several
      possibilities, but when calling a known callback, it's just
      overhead.  We can make the direct call in those cases.
      
      * src/xen/xen_driver.c (xenUnifiedOpen, xenUnifiedDomainSuspend)
      (xenUnifiedDomainResume, xenUnifiedDomainDestroyFlags): Make
      direct calls instead of going through callback.
      03e5f8bb
    • E
      xen: cleanup callback struct · f859919f
      Eric Blake 提交于
      Using C99 initializers and xen-specific prefixes will make it
      so that future patches are less likely to add callback members
      to the xenUnifiedDriver struct, since the goal is to get rid
      of the callback struct in the first place.
      
      * src/xen/xen_driver.h (xenUnifiedDriver): Rename all struct
      members, to make it obvious which ones are still in use.
      * src/xen/xen_driver.c: Update all callers.
      * src/xen/xen_hypervisor.c (xenHypervisorDriver): Rewrite with C99
      initializers.
      * src/xen/xend_internal.c (xenDaemonDriver): Likewise.
      * src/xen/xs_internal.c (xenStoreDriver): Likewise.
      * src/xen/xm_internal.c (xenXMDriver): Likewise.
      * src/xen/xen_inotify.c (xenInotifyDriver): Likewise.
      f859919f
    • L
      libxl: fix build failure due to change in virDomainGraphicsDef · eb1e3143
      Laine Stump 提交于
      This failure was introduced by commit dacee3d, which removed
      listenAddr from the unions in virDomainGraphicsDef in favor of putting
      it in the address attribute of virDomainGraphicsListenDef.
      eb1e3143
    • L
      qemu: support type=network in domain graphics <listen> · 99e4b30b
      Laine Stump 提交于
      The domain XML now understands the <listen> subelement of its
      <graphics> element (including when listen type='network'), and the
      network driver has an internal API that will turn a network name into
      an IP address, so the final logical step is to put the glue into the
      qemu driver so that when it is starting up a domain, if it finds
      <listen type='network' network='xyz'/> in the XML, it will call the
      network driver to get an IPv4 address associated with network xyz, and
      tell qemu to listen for vnc (or spice) on that address rather than the
      default address (localhost).
      
      The motivation for this is that a large installation may want the
      guests' VNC servers listening on physical interfaces rather than
      localhost, so that users can connect directly from the outside; this
      requires sending qemu the appropriate IP address to listen on. But
      this address will of course be different for each host, and if a guest
      might be migrated around from one host to another, it's important that
      the guest's config not have any information embedded in it that is
      specific to one particular host. <listen type='network.../> can solve
      this problem in the following manner:
      
        1) on each host, define a libvirt network of the same name,
           associated with the interface on that host that should be used
           for listening (for example, a simple macvtap network: <forward
           mode='bridge' dev='eth0'/>, or host bridge network: <forward
           mode='bridge'/> <bridge name='br0'/>
      
        2) in the <graphics> element of each guest's domain xml, tell vnc to
           listen on the network name used in step 1:
      
           <graphics type='vnc' port='5922'>
             <listen type='network'network='example-net'/>
           </graphics>
      
      (all the above also applies for graphics type='spice').
      99e4b30b
    • L
      conf: add <listen> subelement to domain <graphics> element · ef79fb5b
      Laine Stump 提交于
      Once it's plugged in, the <listen> element will be an optional
      replacement for the "listen" attribute that graphics elements already
      have. If the <listen> element is type='address', it will have an
      attribute called 'address' which will contain an IP address or dns
      name that the guest's display server should listen on. If, however,
      type='network', the <listen> element should have an attribute called
      'network' that will be set to the name of a network configuration to
      get the IP address from.
      
      * docs/schemas/domain.rng: updated to allow the <listen> element
      
      * docs/formatdomain.html.in: document the <listen> element and its
        attributes.
      
      * src/conf/domain_conf.[hc]:
      
        1) The domain parser, formatter, and data structure are modified to
           support 0 or more <listen> subelements to each <graphics>
           element. The old style "legacy" listen attribute is also still
           accepted, and will be stored internally just as if it were a
           separate <listen> element. On output (i.e. format), the address
           attribute of the first <listen> element of type 'address' will be
           duplicated in the legacy "listen" attribute of the <graphic>
           element.
      
        2) The "listenAddr" attribute has been removed from the unions in
           virDomainGRaphicsDef for graphics types vnc, rdp, and spice.
           This attribute is now in the <listen> subelement (aka
           virDomainGraphicsListenDef)
      
        3) Helper functions were written to provide simple access
           (both Get and Set) to the listen elements and their attributes.
      
      * src/libvirt_private.syms: export the listen helper functions
      
      * src/qemu/qemu_command.c, src/qemu/qemu_hotplug.c,
        src/qemu/qemu_migration.c, src/vbox/vbox_tmpl.c,
        src/vmx/vmx.c, src/xenxs/xen_sxpr.c, src/xenxs/xen_xm.c
      
        Modify all these files to use the listen helper functions rather
        than directly referencing the (now missing) listenAddr
        attribute. There can be multiple <listen> elements to a single
        <graphics>, but the drivers all currently only support one, so all
        replacements of direct access with a helper function indicate index
        "0".
      
      * tests/* - only 3 of these are new files added explicitly to test the
        new <listen> element. All the others have been modified to reflect
        the fact that any legacy "listen" attributes passed in to the domain
        parse will be saved in a <listen> element (i.e. one of the
        virDomainGraphicsListenDefs), and during the domain format function,
        both the <listen> element as well as the legacy attributes will be
        output.
      ef79fb5b
  2. 28 7月, 2011 16 次提交
  3. 27 7月, 2011 14 次提交
  4. 26 7月, 2011 4 次提交
    • A
      tools: format percent strings of nodecpustats · 831c81fc
      Alex Jia 提交于
      * tools/virsh.c: format strings display for virsh nodecpustats --percent.
      
      * how to reproduce?
      
      % virsh nodecpustats --percent
      usage:            2.0%
          user  :       1.0%
          system:       1.0%
      idle  :          98.0%
      iowait:           0.0%
      
      * after format strings
      
      % virsh nodecpustats --percent
      usage:            2.0%
      user:             1.0%
      system:           1.0%
      idle:            98.0%
      iowait:           0.0%
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      831c81fc
    • S
      Build: fix build if HAVE_AVAHI is not defined · f63930a7
      Stefan Berger 提交于
      Fix the build if HAVE_AVAHI is not defined.
      f63930a7
    • D
      Fix incorrect implication about list options · 93fb3acc
      Dave Allan 提交于
      The description of the list command seemed to suggest that it could
      take a set of domains as an argument, which is not correct in the
      current HEAD.  If virsh list is intended to take a list of domains,
      then this patch should be NAK'd and a bug opened against virsh list.
      
      Reported by hachi on #virt
      
      v2:
      
      Change language to include transient domains
      
      Osier pointed out that transient domains are not defined, so what I
      had originally proposed wasn't quite correct.
      93fb3acc
    • D
      Fix race in ref counting when handling RPC jobs · 0302391e
      Daniel P. Berrange 提交于
      When an incoming RPC message is ready for processing,
      
        virNetServerClientDispatchRead()
      
      will invoke the 'dispatchFunc' callback. This is set to
      
        virNetServerDispatchNewMessage
      
      This function puts the message + client in a queue for processing by the thread
      pool. The thread pool worker function is
      
        virNetServerHandleJob
      
      The first thing this does is acquire an extra reference on the 'client'.
      
      Unfortunately, between the time the message+client are put on the thread pool
      queue, and the time the worker runs, the client object may have had its last
      reference removed.
      
      We clearly need to add the reference to the client object before putting the
      client on the processing queue
      
      * src/rpc/virnetserverclient.c: Add a reference to the client when
        invoking the dispatch function
      * src/rpc/virnetserver.c: Don't acquire a reference to the client
        when in the worker thread
      0302391e