1. 09 12月, 2015 5 次提交
  2. 30 11月, 2015 3 次提交
    • M
      conf: Split virDomainObjList into a separate file · 90f3c0d7
      Michal Privoznik 提交于
      Our domain_conf.* files are big enough. Not only they contain XML
      parsing code, but they served as a storage of all functions whose
      name is virDomain prefixed. This is just wrong as it gathers not
      related functions (and modules) into one big file which is then
      harder to maintain. Split virDomainObjList module into a separate
      file called virdomainobjlist.[ch].
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      90f3c0d7
    • E
      livirt: Move URI alias matching to util · fb90fcc0
      Erik Skultety 提交于
      As we need to provide support for URI aliases in libvirt-admin as well, URI
      alias matching needs to be internally visible. Since
      virConnectOpenResolveURIAlias does have a compatible signature, it could be
      easily reused by libvirt-admin. This patch moves URI alias matching to util,
      renaming it accordingly.
      fb90fcc0
    • E
      libvirt: Move config getters to util · c4bdff19
      Erik Skultety 提交于
      virConnectGetConfig and virConnectGetConfigPath were static libvirt
      methods, merely because there hasn't been any need for having them
      internally exported yet. Since libvirt-admin also needs to reference
      its config file, 'xGetConfig' should be exported.
      Besides moving, this patch also renames the methods accordingly,
      as they are libvirt config specific.
      c4bdff19
  3. 26 11月, 2015 2 次提交
    • D
      logging: add client for virtlogd daemon · 37ed4224
      Daniel P. Berrange 提交于
      Add the virLogManager API which allows for communication with
      the virtlogd daemon to RPC program. This provides the client
      side API to open log files for guest domains.
      
      The virtlogd daemon is setup to auto-spawn on first use when
      running unprivileged. For privileged usage, systemd socket
      activation is used instead.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      37ed4224
    • D
      util: add APIs for reading/writing from/to rotating files · 910e65d9
      Daniel P. Berrange 提交于
      Add virRotatingFileReader and virRotatingFileWriter objects
      which allow reading & writing from/to files with automation
      rotation to N backup files when a size limit is reached. This
      is useful for guest logging when a guaranteed finite size
      limit is required. Use of external tools like logrotate is
      inadequate since it leaves the possibility for guest to DOS
      the host in between invokations of logrotate.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      910e65d9
  4. 19 11月, 2015 1 次提交
  5. 29 10月, 2015 1 次提交
    • M
      network: wait for DAD to finish for bridge IPv6 addresses · 0f7436ca
      Maxim Perevedentsev 提交于
      commit db488c79 assumed that dnsmasq would complete IPv6 DAD before
      daemonizing, but in reality it doesn't wait, which creates problems
      when libvirt's bridge driver sets the matching "dummy tap device" to
      IFF_DOWN prior to DAD completing.
      
      This patch waits for DAD completion by periodically polling the kernel
      using netlink to check whether there are any IPv6 addresses assigned
      to bridge which have a 'tentative' state (if there are any in this
      state, then DAD hasn't yet finished). After DAD is finished, execution
      continues. To avoid an endless hang in case something was wrong with
      the kernel's DAD, we wait a maximum of 5 seconds.
      0f7436ca
  6. 26 10月, 2015 1 次提交
  7. 05 10月, 2015 2 次提交
  8. 22 9月, 2015 3 次提交
    • P
      conf: Pre-calculate initial memory size instead of always calculating it · 403e8606
      Peter Krempa 提交于
      Add 'initial_memory' member to struct virDomainMemtune so that the
      memory size can be pre-calculated once instead of inferring it always
      again and again.
      
      Separating of the fields will also allow finer granularity of decisions
      in later patches where it will allow to keep the old initial memory
      value in cases where we are handling incomming migration from older
      versions that did not always update the size from NUMA as the code did
      previously.
      
      The change also requires modification of the qemu memory alignment
      function since at the point where we are modifying the size of NUMA
      nodes the total size needs to be recalculated too.
      
      The refactoring done in this patch also fixes a crash in the hyperv
      driver that did not properly initialize def->numa and thus
      virDomainNumaGetMemorySize(def->numa) crashed.
      
      In summary this patch should have no functional impact at this point.
      403e8606
    • P
      conf: Rename max_balloon to total_memory · 8059a990
      Peter Krempa 提交于
      The name of the variable was misleading. Rename it and it's setting
      accessor before other fixes.
      8059a990
    • P
      conf: Add helper to determine whether memory hotplug is enabled for a vm · 1891cad5
      Peter Krempa 提交于
      Add a simple helper so that the code doesn't have to rewrite the same
      condition multiple times.
      1891cad5
  9. 21 9月, 2015 1 次提交
    • J
      virfile: Rename virFileUnlink to virFileRemove · 1b046a68
      John Ferlan 提交于
      Similar to commit id '35847860', it's possible to attempt to create
      a 'netfs' directory in an NFS root-squash environment which will cause
      the 'vol-delete' command to fail.  It's also possible error paths from
      the 'vol-create' would result in an error to remove a created directory
      if the permissions were incorrect (and disallowed root access).
      
      Thus rename the virFileUnlink to be virFileRemove to match the C API
      functionality, adjust the code to following using rmdir or unlink
      depending on the path type, and then use/call it for the VIR_STORAGE_VOL_DIR
      1b046a68
  10. 18 9月, 2015 1 次提交
  11. 03 9月, 2015 1 次提交
  12. 02 9月, 2015 1 次提交
    • J
      virfile: Introduce virFileUnlink · 35847860
      John Ferlan 提交于
      In an NFS root-squashed environment the 'vol-delete' command will fail to
      'unlink' the target volume since it was created under a different uid:gid.
      
      This code continues the concepts introduced in virFileOpenForked and
      virDirCreate[NoFork] with respect to running the unlink command under
      the uid/gid of the child. Unlike the other two, don't retry on EACCES
      (that's why we're here doing this now).
      35847860
  13. 24 8月, 2015 1 次提交
  14. 19 8月, 2015 2 次提交
  15. 14 8月, 2015 2 次提交
    • E
      tools: Introduce new client generic module vsh · 834c5720
      Erik Skultety 提交于
      In order to share as much virsh' logic as possible with upcomming
      virt-admin client we need to split virsh logic into virsh specific and
      client generic features.
      
      Since majority of virsh methods should be generic enough to be used by
      other clients, it's much easier to rename virsh specific data to virshX
      than doing this vice versa. It moved generic virsh commands (including info
      and opts structures) to generic module vsh.c.
      
      Besides renaming methods and structures, this patch also involves introduction
      of a client specific control structure being referenced as private data in the
      original control structure, introduction of a new global vsh Initializer,
      which currently doesn't do much, but there is a potential for added
      functionality in the future.
      Lastly it introduced client hooks which are especially necessary during
      client connecting phase.
      834c5720
    • T
      domain_conf: Introducde virDomainObjListRenameAddNew() & virDomainObjListRenameRemove() · 28257dc2
      Tomas Meszaros 提交于
      We just need to update the entry in the second hash table. Since commit 8728a565
      we have two hash tables for the domain list so that we can do O(1) lookup
      regardless of looking up by UUID or name. Since with renaming a domain UUID does
      not change, we only need to update the second hash table, where domains are
      referenced by their name.
      
      We will call both functions from the qemuDomainRename().
      Signed-off-by: NTomas Meszaros <exo@tty.sk>
      28257dc2
  16. 10 8月, 2015 1 次提交
    • L
      conf: add new <model> subelement with name attribute to <controller> · bf202510
      Laine Stump 提交于
      This new subelement is used in PCI controllers: the toplevel
      *attribute* "model" of a controller denotes what kind of PCI
      controller is being described, e.g. a "dmi-to-pci-bridge",
      "pci-bridge", or "pci-root". But in the future there will be different
      implementations of some of those types of PCI controllers, which
      behave similarly from libvirt's point of view (and so should have the
      same model), but use a different device in qemu (and present
      themselves as a different piece of hardware in the guest). In an ideal
      world we (i.e. "I") would have thought of that back when the pci
      controllers were added, and used some sort of type/class/model
      notation (where class was used in the way we are now using model, and
      model was used for the actual manufacturer's model number of a
      particular family of PCI controller), but that opportunity is long
      past, so as an alternative, this patch allows selecting a particular
      implementation of a pci controller with the "name" attribute of the
      <model> subelement, e.g.:
      
        <controller type='pci' model='dmi-to-pci-bridge' index='1'>
          <model name='i82801b11-bridge'/>
        </controller>
      
      In this case, "dmi-to-pci-bridge" is the kind of controller (one that
      has a single PCIe port upstream, and 32 standard PCI ports downstream,
      which are not hotpluggable), and the qemu device to be used to
      implement this kind of controller is named "i82801b11-bridge".
      
      Implementing the above now will allow us in the future to add a new
      kind of dmi-to-pci-bridge that doesn't use qemu's i82801b11-bridge
      device, but instead uses something else (which doesn't yet exist, but
      qemu people have been discussing it), all without breaking existing
      configs.
      
      (note that for the existing "pci-bridge" type of PCI controller, both
      the model attribute and <model> name are 'pci-bridge'. This is just a
      coincidence, since it turns out that in this case the device name in
      qemu really is a generic 'pci-bridge' rather than being the name of
      some real-world chip)
      bf202510
  17. 07 8月, 2015 2 次提交
    • M
      numa_conf: Introduce virDomainNumaGetMaxCPUID · 8f2535de
      Michal Privoznik 提交于
      This function should return the greatest CPU number set in
      /domain/cpu/numa/cell/@cpus. The idea is that we should compare
      the returned value against /domain/vcpu value. Yes, there exist
      users who think the following is a good idea:
      
        <vcpu placement='static'>4</vcpu>
        <cpu mode='host-model'>
          <model fallback='allow'/>
          <numa>
            <cell id='0' cpus='0-1' memory='1048576' unit='KiB'/>
            <cell id='1' cpus='9-10' memory='2097152' unit='KiB'/>
          </numa>
        </cpu>
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      8f2535de
    • P
      qemu: Fix reporting of physical capacity for block devices · 8dc27259
      Peter Krempa 提交于
      Qemu reports physical size 0 for block devices. As 15fa84ac
      changed the behavior of qemuDomainGetBlockInfo to just query the monitor
      this created a regression since we didn't report the size correctly any
      more.
      
      This patch adds code to refresh the physical size of a block device by
      opening it and seeking to the end and uses it both in
      qemuDomainGetBlockInfo and also in qemuDomainGetStatsOneBlock that was
      broken since it was introduced in this respect.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1250982
      8dc27259
  18. 03 8月, 2015 1 次提交
    • S
      nodeinfo: Fix output on PPC64 KVM hosts · 014208c4
      Shivaprasad G Bhat 提交于
      The nodeinfo is reporting incorrect number of cpus and incorrect host
      topology on PPC64 KVM hosts. The KVM hypervisor on PPC64 needs only
      the primary thread in a core to be online, and the secondaries offlined.
      While scheduling a guest in, the kvm scheduler wakes up the secondaries to
      run in guest context.
      
      The host scheduling of the guests happen at the core level(as only primary
      thread is online). The kvm scheduler exploits as many threads of the core
      as needed by guest. Further, starting POWER8, the processor allows splitting
      a physical core into multiple subcores with 2 or 4 threads each. Again, only
      the primary thread in a subcore is online in the host. The KVM-PPC
      scheduler allows guests to exploit all the offline threads in the subcore,
      by bringing them online when needed.
      (Kernel patches on split-core http://www.spinics.net/lists/kvm-ppc/msg09121.html)
      
      Recently with dynamic micro-threading changes in ppc-kvm, makes sure
      to utilize all the offline cpus across guests, and across guests with
      different cpu topologies.
      (https://www.mail-archive.com/kvm@vger.kernel.org/msg115978.html)
      
      Since the offline cpus are brought online in the guest context, it is safe
      to count them as online. Nodeinfo today discounts these offline cpus from
      cpu count/topology calclulation, and the nodeinfo output is not of any help
      and the host appears overcommited when it is actually not.
      
      The patch carefully counts those offline threads whose primary threads are
      online. The host topology displayed by the nodeinfo is also fixed when the
      host is in valid kvm state.
      Signed-off-by: NShivaprasad G Bhat <sbhat@linux.vnet.ibm.com>
      Signed-off-by: NAndrea Bolognani <abologna@redhat.com>
      014208c4
  19. 22 7月, 2015 2 次提交
  20. 20 7月, 2015 1 次提交
    • M
      qemu: Reject updating unsupported disk information · 717c99f3
      Martin Kletzander 提交于
      If one calls update-device with information that is not updatable,
      libvirt reports success even though no data were updated.  The example
      used in the bug linked below uses updating device with <boot order='2'/>
      which, in my opinion, is a valid thing to request from user's
      perspective.  Mainly since we properly error out if user wants to update
      such data on a network device for example.
      
      And since there are many things that might happen (update-device on disk
      basically knows just how to change removable media), check for what's
      changing and moreover, since the function might be usable in other
      drivers (updating only disk path is a valid possibility) let's abstract
      it for any two disks.
      
      We can't possibly check for everything since for many fields our code
      does not properly differentiate between default and unspecified values.
      Even though this could be changed, I don't feel like it's worth the
      complexity so it's not the aim of this patch.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1007228
      717c99f3
  21. 14 7月, 2015 1 次提交
  22. 10 7月, 2015 3 次提交
  23. 23 6月, 2015 1 次提交
    • E
      json: make it easier to type-check when getting from object · 58fd6703
      Eric Blake 提交于
      While working in qemu_monitor_json, I repeatedly found myself
      getting a value then checking if it was an object.  Add some
      wrappers to make this task easier.
      
      * src/util/virjson.c (virJSONValueObjectGetByType)
      (virJSONValueObjectGetObject, virJSONValueObjectGetArray): New
      functions.
      (virJSONValueObjectGetString, virJSONValueObjectGetNumberInt)
      (virJSONValueObjectGetNumberUint)
      (virJSONValueObjectGetNumberLong)
      (virJSONValueObjectGetNumberUlong)
      (virJSONValueObjectGetNumberDouble)
      (virJSONValueObjectGetBoolean): Simplify.
      (virJSONValueIsNull): Change return type.
      * src/util/virjson.h: Reflect changes.
      * src/libvirt_private.syms (virjson.h): Export them.
      * tests/jsontest.c (testJSONLookup): New test.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      58fd6703
  24. 19 6月, 2015 1 次提交