1. 31 1月, 2015 2 次提交
  2. 30 1月, 2015 2 次提交
  3. 29 1月, 2015 3 次提交
  4. 27 1月, 2015 1 次提交
    • D
      systemd: don't report an error if the guest is already terminated · b3e4401d
      Daniel P. Berrange 提交于
      In many cases where we invoke virSystemdTerminateMachine the
      process(es) will have already gone away on their own accord.
      In these cases we log an error message that the machine does
      not exist. We should catch this particular error and simply
      ignore it, so we don't pollute the logs.
      b3e4401d
  5. 26 1月, 2015 4 次提交
  6. 23 1月, 2015 2 次提交
  7. 20 1月, 2015 1 次提交
  8. 17 1月, 2015 1 次提交
  9. 16 1月, 2015 1 次提交
  10. 15 1月, 2015 7 次提交
  11. 12 1月, 2015 1 次提交
    • J
      virconf: Resolve a possible memory leak in virConfSetValue · b789db36
      John Ferlan 提交于
      Found this one by inspection... The API claims to "own" the input
      value even in the case of error.  However, in the initial entry
      to the API if the value exists, was STRING, but without a str value
      it just returned without freeing the 'value' which it claims to now
      own.  So I added the virConfFreeValue() call in order to resolve.
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      b789db36
  12. 09 1月, 2015 1 次提交
    • J
      safezero: fall back to writing zeroes even when resizing · 1390c268
      Ján Tomko 提交于
      Remove the resize flag and use the same code path for all callers.
      This flag was added by commit 18f03166 to allow virStorageFileResize
      use 'safezero' while preserving the behavior.
      
      Explicitly return -2 when a fallback to a different method should
      be done, to make the code path more obvious.
      
      Fail immediately when ftruncate fails in the mmap method,
      as we did before commit 18f03166.
      1390c268
  13. 06 1月, 2015 8 次提交
  14. 23 12月, 2014 1 次提交
  15. 21 12月, 2014 2 次提交
    • M
      qemu: completely rework reference counting · 540c339a
      Martin Kletzander 提交于
      There is one problem that causes various errors in the daemon.  When
      domain is waiting for a job, it is unlocked while waiting on the
      condition.  However, if that domain is for example transient and being
      removed in another API (e.g. cancelling incoming migration), it get's
      unref'd.  If the first call, that was waiting, fails to get the job, it
      unref's the domain object, and because it was the last reference, it
      causes clearing of the whole domain object.  However, when finishing the
      call, the domain must be unlocked, but there is no way for the API to
      know whether it was cleaned or not (unless there is some ugly temporary
      variable, but let's scratch that).
      
      The root cause is that our APIs don't ref the objects they are using and
      all use the implicit reference that the object has when it is in the
      domain list.  That reference can be removed when the API is waiting for
      a job.  And because each domain doesn't do its ref'ing, it results in
      the ugly checking of the return value of virObjectUnref() that we have
      everywhere.
      
      This patch changes qemuDomObjFromDomain() to ref the domain (using
      virDomainObjListFindByUUIDRef()) and adds qemuDomObjEndAPI() which
      should be the only function in which the return value of
      virObjectUnref() is checked.  This makes all reference counting
      deterministic and makes the code a bit clearer.
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      540c339a
    • M
      util: Fix possible NULL dereference · 3b0f0557
      Martin Kletzander 提交于
      Commit 1a80b97d, which added the virCgroupHasEmptyTasks() function
      forgot that the parameter @cgroup may be NULL and did not check that.
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      3b0f0557
  16. 19 12月, 2014 1 次提交
    • D
      Don't setup fake CPU pids for old QEMU · b07f3d82
      Daniel P. Berrange 提交于
      The code assumes that def->vcpus == nvcpupids, so when we setup
      fake CPU pids for old QEMU with nvcpupids == 1, we cause the
      later code to read off the end of the array. This has fun results
      like sche_setaffinity(0, ...) which changes libvirtd's own CPU
      affinity, or even better sched_setaffinity($RANDOM, ...) which
      changes the affinity of a random OS process.
      b07f3d82
  17. 18 12月, 2014 1 次提交
  18. 17 12月, 2014 1 次提交
    • E
      qemu: let blockinfo reuse virStorageSource · 89646e69
      Eric Blake 提交于
      Right now, grabbing blockinfo always calls stat on the disk, then
      opens the image to determine the capacity, using a throw-away
      virStorageSourcePtr.  This has a couple of drawbacks:
      
      1. We are calling stat and opening a file on every invocation of
      the API.  However, there are cases where the stats should NOT be
      changing between successive calls (if a domain is running, no
      one should be changing the physical size of a block device or raw
      image behind our backs; capacity of read-only files should not
      be changing; and we are the gateway to the block-resize command
      to know when the capacity of read-write files should be changing).
      True, we still have to use stat in some cases (a sparse raw file
      changes allocation if it is read-write and the amount of holes is
      changing, and a read-write qcow2 image stored in a file changes
      physical size if it was not fully pre-allocated).  But for
      read-only images, even this should be something we can remember
      from the previous time, rather than repeating every call.
      
      2. We want to enhance the power of virDomainListGetStats, by
      sharing code.  But we already have a virStorageSourcePtr for
      each disk, and it would be easier to reuse the common structure
      than to have to worry about the one-off virDomainBlockInfoPtr.
      
      While this patch does not optimize reuse of information in point
      1, it does get us closer to being able to do so; by updating a
      structure that survives between consecutive calls.
      
      * src/util/virstoragefile.h (_virStorageSource): Add physical, to
      mirror virDomainBlockInfo; rearrange fields to match public struct.
      (virStorageSourceCopy): Copy the new field.
      * src/qemu/qemu_driver.c (qemuDomainGetBlockInfo): Store into
      storage source, then copy to block info.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      89646e69