1. 06 6月, 2014 13 次提交
    • E
      conf: consolidate disk def allocation · bc3f5f19
      Eric Blake 提交于
      A future patch wants to create disk definitions with non-zero
      default contents; to avoid crashes, all callers that allocate
      a disk definition should go through a common point.
      
      I found allocation points by looking for any code that increments
      ndisks, as well as any matches for ALLOC.*disk.  Most places that
      modified ndisks were covered by the parse from XML to domain/device
      definition by initial domain creation or device hotplug; I also
      hand-checked all drivers that generate a device struct on the
      fly during getXMLDesc.
      
      * src/conf/domain_conf.h (virDomainDiskDefNew): New prototype.
      * src/conf/domain_conf.c (virDomainDiskDefNew): New function.
      (virDomainDiskDefParseXML): Use it.
      * src/parallels/parallels_driver.c (parallelsAddHddInfo):
      Likewise.
      * src/qemu/qemu_command.c (qemuParseCommandLine): Likewise.
      * src/vbox/vbox_tmpl.c (vboxDomainGetXMLDesc): Likewise.
      * src/vmx/vmx.c (virVMXParseDisk): Likewise.
      * src/xenxs/xen_sxpr.c (xenParseSxprDisks, xenParseSxpr):
      Likewise.
      * src/xenxs/xen_xm.c (xenParseXM): Likewise.
      * src/libvirt_private.syms (domain_conf.h): Export it.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      bc3f5f19
    • E
      conf: store snapshot source as pointer, for easier manipulation · 00c6327a
      Eric Blake 提交于
      As part of the work on backing chains, I'm finding that it would
      be easier to directly manipulate chains of pointers (adding a
      snapshot merely adjusts pointers to form the correct list) rather
      than copy data from one struct to another. This patch converts
      snapshot source to be a pointer.
      
      In this patch, the pointer is ALWAYS allocated (any code that
      increases ndisks now also allocates a source pointer for each
      new disk), and all other changes are just mechanical fallout of
      the new type; there should be no functional change.  It is
      possible that we may want to leave the pointer NULL for internal
      snapshots in a later patch, but as that requires a closer audit
      of the source to ensure we don't fault on a null dereference, I
      didn't do it here.
      
      * src/conf/snapshot_conf.h (_virDomainSnapshotDiskDef): Change
      type of src.
      * src/conf/snapshot_conf.c: Adjust all clients.
      * src/qemu/qemu_conf.c: Likewise.
      * src/qemu/qemu_driver.c: Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      00c6327a
    • M
      nodedev: Export NUMA node locality for PCI devices · 1c702778
      Michal Privoznik 提交于
      A PCI device can be associated with a specific NUMA node. Later, when
      a guest is pinned to one NUMA node the PCI device can be assigned on
      different NUMA node. This makes DMA transfers travel across nodes and
      thus results in suboptimal performance. We should expose the NUMA node
      locality for PCI devices so management applications can make better
      decisions.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      1c702778
    • J
      Introduce virBitmapDataToString · 7d8afc47
      Ján Tomko 提交于
      For converting bitmap data to human-readable strings.
      7d8afc47
    • J
      Always report an error if virBitmapFormat fails · d4edce5f
      Ján Tomko 提交于
      It already reports an error if STRDUP fails.
      d4edce5f
    • J
      Format NULL bitmap as an empty string · cd09ab4d
      Ján Tomko 提交于
      This simplifies the usage in {libxl,qemu}DomainGetNumaParameters
      and it's needed for consistent error reporting in virBitmapFormat.
      
      Also remove the forgotten ATTRIBUTE_NONNULL marker.
      cd09ab4d
    • A
      Parallels: Include CPU info in the capabilities XML · 4d06af97
      Alexander Burluka 提交于
      Openstack uses (or will start to using) CPU info from the
      capabilities XML. So this section is expanded, added CPU info
      about arch, type and info about number of cores, sockets and threads.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      4d06af97
    • A
      Parallels: add connectBaselineCPU() · d1c69d41
      Alexander Burluka 提交于
      Openstack Nova (starting at Icehouse release) requires this function
      to start VM.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      d1c69d41
    • A
      Parallels: add domainGetVcpus() · e721e9e6
      Alexander Burluka 提交于
      OpenStack Nova requires this function
      to start VM instance. Cpumask info is obtained via prlctl utility.
      Unlike KVM, Parallels Cloud Server is unable to set cpu affinity
      mask for every VCpu. Mask is unique for all VCpu. You can set it
      using 'prlctl set <vm_id|vm_name> --cpumask <{n[,n,n1-n2]|all}>'
      command. For example, 'prlctl set SomeDomain --cpumask 0,1,5-7'
      would set this mask to yy---yyy.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      e721e9e6
    • M
      Remove unnecessary empty first lines · 3de462fe
      Martin Kletzander 提交于
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      3de462fe
    • J
      Fix storage format probing · c110cdb2
      Ján Tomko 提交于
      Commit fff74b27 moved the probing into virStorageFileGetMetadataFromBuf
      but didn't update the format in volume definition.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1104908
      c110cdb2
    • J
      Simplify conditions in virStorageBackendProbeTarget · effbb11e
      Ján Tomko 提交于
      Jump out early if no metadata was detected (for directories).
      Join the error and cleanup labels.
      effbb11e
    • J
      Don't reuse 'ret' variable in virStorageBackendProbeTarget · febcb89c
      Ján Tomko 提交于
      To match the convention:
      ret - current function's return value
      rc - other function's return values
      febcb89c
  2. 05 6月, 2014 2 次提交
  3. 04 6月, 2014 4 次提交
    • M
      virnuma: Check for numa_bitmask_isbitset presence · 9e0cbcd8
      Michal Privoznik 提交于
      On some systems, libnuma can be present but it's so ancient that
      it misses some symbols that virNumaGetDistances() needs. To be
      more precise: numa_bitmask_isbitset() and numa_nodes_ptr are the
      symbols in question. Fortunately, they were both introduced in
      the same release so it's sufficient for us to check for only one
      of them. And the winner is numa_bitmask_isbitset().
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      9e0cbcd8
    • M
      virnuma: Implement virNumaGetDistances stub for non-NUMA · 3289edd2
      Michal Privoznik 提交于
      In case the libvirt is built without numactl support, we're
      missing the virNumaGetDistances() stub so the linking fails:
      
        CCLD     libvirt_lxc
      libvirt_lxc-nodeinfo.o: In function `virNodeCapsGetSiblingInfo':
      /home/zippy/tmp/libvirt.git/src/nodeinfo.c:1763: undefined reference to `virNumaGetDistances'
      collect2: error: ld returned 1 exit status
      make[3]: *** [libvirt_lxc] Error 1
      
      The issue was introduced in 77c830d8.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      3289edd2
    • M
      virCaps: Expose distance between host NUMA nodes · 8ba0a58f
      Michal Privoznik 提交于
      If user or management application wants to create a guest,
      it may be useful to know the cost of internode latencies
      before the guest resources are pinned. For example:
      
      <capabilities>
      
        <host>
          ...
          <topology>
            <cells num='2'>
              <cell id='0'>
                <memory unit='KiB'>4004132</memory>
                <distances>
                  <sibling id='0' value='10'/>
                  <sibling id='1' value='20'/>
                </distances>
                <cpus num='2'>
                  <cpu id='0' socket_id='0' core_id='0' siblings='0'/>
                  <cpu id='2' socket_id='0' core_id='2' siblings='2'/>
                </cpus>
              </cell>
              <cell id='1'>
                <memory unit='KiB'>4030064</memory>
                <distances>
                  <sibling id='0' value='20'/>
                  <sibling id='1' value='10'/>
                </distances>
                <cpus num='2'>
                  <cpu id='1' socket_id='0' core_id='0' siblings='1'/>
                  <cpu id='3' socket_id='0' core_id='2' siblings='3'/>
                </cpus>
              </cell>
            </cells>
          </topology>
          ...
        </host>
        ...
      </capabilities>
      
      We can see the distance from node1 to node0 is 20 and within nodes 10.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      8ba0a58f
    • M
      virnuma: Introduce virNumaGetDistances · 77c830d8
      Michal Privoznik 提交于
      The API gets a NUMA node and find distances to other nodes.  The
      distances are returned in an array. If an item X within the array
      equals to value of zero, then there's no such node as X.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      77c830d8
  4. 03 6月, 2014 21 次提交