1. 03 9月, 2011 1 次提交
    • E
      snapshot: fine-tune ability to start paused · 3cff66f4
      Eric Blake 提交于
      While it is nice that snapshots and saved images remember whether
      the domain was running or paused, sometimes the restoration phase
      wants to guarantee a particular state (paused to allow hot-plugging,
      or running without needing to call resume).  This introduces new
      flags to allow the control, and a later patch will implement the
      flags for qemu.
      
      * include/libvirt/libvirt.h.in (VIR_DOMAIN_SAVE_RUNNING)
      (VIR_DOMAIN_SAVE_PAUSED, VIR_DOMAIN_SNAPSHOT_REVERT_RUNNING)
      (VIR_DOMAIN_SNAPSHOT_REVERT_PAUSED): New flags.
      * src/libvirt.c (virDomainSaveFlags, virDomainRestoreFlags)
      (virDomainManagedSave, virDomainSaveImageDefineXML)
      (virDomainRevertToSnapshot): Document their use, and enforce
      mutual exclusion.
      3cff66f4
  2. 02 9月, 2011 3 次提交
    • O
      storage: Add fs pool formatting · 27758859
      Osier Yang 提交于
      This patch adds the ability to make the filesystem for a filesystem
      pool during a pool build.
      
      The patch adds two new flags, no overwrite and overwrite, to control
      when mkfs gets executed.  By default, the patch preserves the
      current behavior, i.e., if no flags are specified, pool build on a
      filesystem pool only makes the directory on which the filesystem
      will be mounted.
      
      If the no overwrite flag is specified, the target device is checked
      to determine if a filesystem of the type specified in the pool is
      present.  If a filesystem of that type is already present, mkfs is
      not executed and the build call returns an error.  Otherwise, mkfs
      is executed and any data present on the device is overwritten.
      
      If the overwrite flag is specified, mkfs is always executed, and any
      existing data on the target device is overwritten unconditionally.
      27758859
    • O
      API: Init conn in case of it might be used uninitialized · 50c82157
      Osier Yang 提交于
      There is a goto before "conn" is initialized.
      50c82157
    • J
      Add public API for getting migration speed · b12354be
      Jim Fehlig 提交于
      Includes impl of python binding since the generator was not
      able to cope.
      
      Note: Requires gendispatch.pl patch from Matthias Bolte
      
      https://www.redhat.com/archives/libvir-list/2011-August/msg01367.html
      b12354be
  3. 31 8月, 2011 1 次提交
    • E
      snapshot: forbid snapshot on autodestroy domain · 173015be
      Eric Blake 提交于
      There is no reason to forbid pausing an autodestroy domain
      (not to mention that 'virsh start --paused --autodestroy'
      succeeds in creating a paused autodestroy domain).
      
      Meanwhile, qemu was failing to enforce the API documentation that
      autodestroy domains cannot be saved.  And while the original
      documentation only mentioned save/restore, snapshots are another
      form of saving that are close enough in semantics as to make no
      sense on one-shot domains.
      
      * src/qemu/qemu_driver.c (qemudDomainSuspend): Drop bogus check.
      (qemuDomainSaveInternal, qemuDomainSnapshotCreateXML): Forbid
      saves of autodestroy domains.
      * src/libvirt.c (virDomainCreateWithFlags, virDomainCreateXML):
      Document snapshot interaction.
      173015be
  4. 30 8月, 2011 1 次提交
    • E
      start: allow discarding managed save · 27c85260
      Eric Blake 提交于
      There have been several instances of people having problems with
      a broken managed save file, and not aware that they could use
      'virsh managedsave-remove dom' to fix things.  Making it possible
      to do this as part of starting a domain makes the same functionality
      easier to find, and one less API call.
      
      * include/libvirt/libvirt.h.in (VIR_DOMAIN_START_FORCE_BOOT): New
      flag.
      * src/libvirt.c (virDomainCreateWithFlags): Document it.
      * src/qemu/qemu_driver.c (qemuDomainObjStart): Alter signature.
      (qemuAutostartDomain, qemuDomainStartWithFlags): Update callers.
      * tools/virsh.c (cmdStart): Expose it in virsh.
      * tools/virsh.pod (start): Document it.
      27c85260
  5. 27 8月, 2011 1 次提交
  6. 26 8月, 2011 4 次提交
    • M
      hyperv: Add driver skeleton · 4d6e6f4a
      Matthias Bolte 提交于
      4d6e6f4a
    • J
      Ignore unused streams in virStreamAbort · b136266d
      Jiri Denemark 提交于
      When virStreamAbort is called on a stream that has not been used yet,
      quite confusing error is returned: "this function is not supported by
      the connection driver". Let's just ignore such streams as there's
      nothing to abort anyway.
      b136266d
    • J
      Do not try to cancel non-existent migration on source · 3398eeda
      Jiri Denemark 提交于
      If migration failed on source daemon, the migration is automatically
      canceled by the daemon itself. Thus we don't need to call
      virDomainMigrateConfirm3(cancelled=1). Calling it doesn't cause any harm
      but the resulting error message printed in logs may confuse people.
      3398eeda
    • A
      libvirt: avoid dead store in virDomainMigrateVersion3 · 5495e45e
      Alex Jia 提交于
      * src/qemu/qemu_migration.c: avoid dead 'ret' assignment and silence
        clang warning.
      
      Detected by ccc-analyzer:
      
      libvirt.c:4277:5: warning: Value stored to 'ret' is never read
          ret = domain->conn->driver->domainMigrateConfirm3
          ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      5495e45e
  7. 25 8月, 2011 1 次提交
  8. 24 8月, 2011 1 次提交
    • E
      libvirt: log all flags parameters · ba0c2199
      Eric Blake 提交于
      I was testing a virsh patch, and wanted to see if I had passed the
      flags I thought.  But with LIBVIRT_DEBUG in the environment, I just
      saw:
      
      14:24:52.359: 15022: debug : virDomainSnapshotNum:15586 : dom=0xc9c180, (VM: name=rhel_6-64, uuid=48f8e8e7-e14f-0e14-02f0-ce71997bdcab),
      
      including a trailing space.  This fixes the issues.
      
      * src/libvirt.c: Log flag parameters, even if currently unused.
      (VIR_DOMAIN_DEBUG_0): Drop trailing comma in log.
      (VIR_DOMAIN_DEBUG_1): Split guts into...
      (VIR_DOMAIN_DEBUG_2): ...new macro.
      ba0c2199
  9. 11 8月, 2011 1 次提交
    • E
      managedsave: prohibit use on transient domains · 0de75e85
      Eric Blake 提交于
      Transient domains reject attempts to set autostart, and using
      virDomainCreate to restart a domain only works on persistent
      domains.  Therefore, managed save makes no sense on transient
      domains, and should be rejected up front rather than creating
      an otherwise unrecoverable managed save file.
      
      Besides, transient domains imply that a lot more management is
      being done by the upper layer; this includes the assumption
      that the upper layer is okay managing the saved state file
      created by virDomainSave, and does not need to use managed save.
      
      * src/libvirt.c: Document that transient domains are incompatible
      with managed save.
      * src/qemu/qemu_driver.c (qemuDomainManagedSave): Enforce it.
      * src/libxl/libxl_driver.c (libxlDomainManagedSave): Likewise.
      0de75e85
  10. 03 8月, 2011 1 次提交
  11. 28 7月, 2011 2 次提交
    • M
      libvirt.c: Update outdated description of flags · 867e7519
      Michal Privoznik 提交于
      Because we do support flags for virDomainSetBlkioParameters and
      virDomainGetBlkioParameters, update appropriate description as well.
      867e7519
    • A
      virsh: fix memory leak in cmdVolPath code · 1768bf63
      Alex Jia 提交于
      * tools/virsh.c: avoid memory leak in cmdVolPath.
      * src/libvirt.c: Add doc for virStorageVolGetPath to tell one
        must free() the returned path after use.
      
      * how to reproduce?
      
      % dd if=/dev/zero of=/var/lib/libvirt/images/foo.img count=1 bs=10M
      % virsh pool-refresh default
      % valgrind -v --leak-check=full virsh vol-path --vol \
      /var/lib/libvirt/images/foo.img
      
      * actual results:
      
      Detected in valgrind run:
      
      ==16436== 32 bytes in 1 blocks are definitely lost in loss record 7 of 22
      ==16436==    at 0x4A05FDE: malloc (vg_replace_malloc.c:236)
      ==16436==    by 0x386A314B3D: xdr_string (in /lib64/libc-2.12.so)
      ==16436==    by 0x3DF8CD770D: xdr_remote_nonnull_string (remote_protocol.c:3
      ==16436==    by 0x3DF8CD7EC8: xdr_remote_storage_vol_get_path_ret
      % virsh pool-refresh default
      % valgrind -v --leak-check=full virsh vol-path --vol \
      /var/lib/libvirt/images/foo.img
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      1768bf63
  12. 27 7月, 2011 1 次提交
    • J
      qemu: Migration job on source daemon · d58e91a8
      Jiri Denemark 提交于
      Make MIGRATION_OUT use the new helper methods.
      
      This also introduces new protection to migration v3 process: the
      migration job is held from Begin to Confirm to avoid changes to a domain
      during migration (esp. between Begin and Perform phases). This change is
      automatically applied to p2p and tunneled migrations. For normal
      migration, this requires support from a client. In other words, if an
      old (pre 0.9.4) client starts normal migration of a domain, the domain
      will not be protected against changes between Begin and Perform steps.
      d58e91a8
  13. 26 7月, 2011 1 次提交
    • E
      vcpu: teach getVcpusFlags about current · 59d04287
      Eric Blake 提交于
      Now that virDomainSetVcpusFlags knows about VIR_DOMAIN_AFFECT_CURRENT,
      so should virDomainGetVcpusFlags.
      
      Unfortunately, the virsh counterpart 'virsh vcpucount' has already
      commandeered --current for a different meaning, so teaching virsh
      to expose this in the next patch will require a bit of care.
      
      * src/libvirt.c (virDomainGetVcpusFlags): Allow
      VIR_DOMAIN_AFFECT_CURRENT.
      * src/libxl/libxl_driver.c (libxlDomainGetVcpusFlags): Likewise.
      * src/qemu/qemu_driver.c (qemudDomainGetVcpusFlags): Likewise.
      * src/test/test_driver.c (testDomainGetVcpusFlags): Likewise.
      * src/xen/xen_driver.c (xenUnifiedDomainGetVcpusFlags): Likewise.
      59d04287
  14. 22 7月, 2011 4 次提交
    • A
      virDomainBlockPull: Implement the main entry points · 72082a05
      Adam Litke 提交于
      * src/libvirt.c: implement the main entry points
      72082a05
    • E
      save: new API to manipulate save file images · d2a929d4
      Eric Blake 提交于
      Modifying the xml on either save or restore only gets you so
      far - you have to remember to 'virsh dumpxml dom' just prior
      to the 'virsh save' in order to have an xml file worth modifying
      that won't be rejected due to abi breaks.  To make this more
      powerful, we need a way to grab the xml embedded within a state
      file, and from there, it's not much harder to also support
      modifying a state file in-place.
      
      Also, virDomainGetXMLDesc didn't document its flags.
      
      * include/libvirt/libvirt.h.in (virDomainSaveImageGetXMLDesc)
      (virDomainSaveImageDefineXML): New prototypes.
      * src/libvirt.c (virDomainSaveImageGetXMLDesc)
      (virDomainSaveImageDefineXML): New API.
      * src/libvirt_public.syms: Export them.
      * src/driver.h (virDrvDomainSaveImageGetXMLDesc)
      (virDrvDomainSaveImgeDefineXML): New driver callbacks.
      d2a929d4
    • M
      destroy: Define new public API virDomainDestroyFlags · 080bc4ea
      Michal Privoznik 提交于
      This introduces new API virDomainDestroyFlags to allow
      domain destroying with flags, as the existing API virDomainDestroy
      misses flags.
      
      The set of flags is defined in virDomainDestroyFlagsValues enum,
      which is currently commented, because it is empty.
      
      Calling this API with no flags set (@flags == 0) is equivalent calling
      virDomainDestroy.
      080bc4ea
    • E
      save: new public API to bypass file system cache on save/restore · ad0b9123
      Eric Blake 提交于
      In order to choose whether to use O_DIRECT when saving a domain image
      to a file, we need a new flag.  But virDomainSave was implemented
      before our policy of all new APIs having a flag argument.  Likewise
      for virDomainRestore when restoring from a file.
      
      The new flag name is chosen as CACHE_BYPASS so as not to preclude
      a future solution that uses posix_fadvise once the Linux kernel has
      a smarter implementation of that interface.
      
      * include/libvirt/libvirt.h.in (virDomainCreateFlags)
      (virDomainCoreDumpFlags): Add a flag.
      (virDomainSaveFlags, virDomainRestoreFlags): New prototypes.
      * src/libvirt.c (virDomainSaveFlags, virDomainRestoreFlags): New API.
      * src/libvirt_public.syms: Export them.
      * src/driver.h (virDrvDomainSaveFlags, virDrvDomainRestoreFlags):
      New driver callbacks.
      ad0b9123
  15. 21 7月, 2011 1 次提交
    • E
      maint: fix typos on guaranteed · a7143405
      Eric Blake 提交于
      * src/conf/domain_event.c (virDomainEventDispatch): Fix typo.
      * src/internal.h (ATTRIBUTE_FMT_PRINTF): Likewise.
      * src/libvirt.c (virStreamEventUpdateCallback): Likewise.
      * src/remote/remote_driver.c (doRemoteOpen): Likewise.
      * src/storage/storage_backend_fs.c (virStorageBackendProbeTarget):
      Likewise.
      * src/util/virterror.c (virConnCopyLastError, virCopyLastError):
      Likewise.
      * src/xen/xend_internal.h (xend_wait_for_devices): Likewise.
      a7143405
  16. 20 7月, 2011 1 次提交
    • O
      undefine: Define the new API · b26a9fa9
      Osier Yang 提交于
      This introduces a new API virDomainUndefineFlags to control the
      domain undefine process, as the existing API virDomainUndefine
      doesn't support flags.
      
      Currently only flag VIR_DOMAIN_UNDEFINE_MANAGED_SAVE is supported.
      If the domain has a managed save image, including
      VIR_DOMAIN_UNDEFINE_MANAGED_SAVE in @flags will also remove that
      file, and omitting the flag will cause undefine process to fail.
      
      This patch also changes the behavior of virDomainUndefine, if the
      domain has a managed save image, the undefine will be refused.
      b26a9fa9
  17. 19 7月, 2011 1 次提交
    • E
      libvirt: do not mix internal flags into public API · 33ba6e68
      Eric Blake 提交于
      There were two API in driver.c that were silently masking flags
      bits prior to calling out to the drivers, and several others
      that were explicitly masking flags bits.  This is not
      forward-compatible - if we ever have that many flags in the
      future, then talking to an old server that masks out the
      flags would be indistinguishable from talking to a new server
      that can honor the flag.  In general, libvirt.c should forward
      _all_ flags on to drivers, and only the drivers should reject
      unknown flags.
      
      In the case of virDrvSecretGetValue, the solution is to separate
      the internal driver callback function to have two parameters
      instead of one, with only one parameter affected by the public
      API.  In the case of virDomainGetXMLDesc, it turns out that
      no one was ever mixing VIR_DOMAIN_XML_INTERNAL_STATUS with
      the dumpxml path in the first place; that internal flag was
      only used in saving and restoring state files, which happened
      to be in functions internal to a single file, so there is no
      mixing of the internal flag with a public flags argument.
      Additionally, virDomainMemoryStats passed a flags argument
      over RPC, but not to the driver.
      
      * src/driver.h (VIR_DOMAIN_XML_FLAGS_MASK)
      (VIR_SECRET_GET_VALUE_FLAGS_MASK): Delete.
      (virDrvSecretGetValue): Separate out internal flags.
      (virDrvDomainMemoryStats): Provide missing flags argument.
      * src/driver.c (verify): Drop unused check.
      * src/conf/domain_conf.h (virDomainObjParseFile): Delete
      declaration.
      (virDomainXMLInternalFlags): Move...
      * src/conf/domain_conf.c: ...here.  Delete redundant include.
      (virDomainObjParseFile): Make static.
      * src/libvirt.c (virDomainGetXMLDesc, virSecretGetValue): Update
      clients.
      (virDomainMemoryPeek, virInterfaceGetXMLDesc)
      (virDomainMemoryStats, virDomainBlockPeek, virNetworkGetXMLDesc)
      (virStoragePoolGetXMLDesc, virStorageVolGetXMLDesc)
      (virNodeNumOfDevices, virNodeListDevices, virNWFilterGetXMLDesc):
      Don't mask unknown flags.
      * src/interface/netcf_driver.c (interfaceGetXMLDesc): Reject
      unknown flags.
      * src/secret/secret_driver.c (secretGetValue): Update clients.
      * src/remote/remote_driver.c (remoteSecretGetValue)
      (remoteDomainMemoryStats): Likewise.
      * src/qemu/qemu_process.c (qemuProcessGetVolumeQcowPassphrase):
      Likewise.
      * src/qemu/qemu_driver.c (qemudDomainMemoryStats): Likewise.
      * daemon/remote.c (remoteDispatchDomainMemoryStats): Likewise.
      33ba6e68
  18. 16 7月, 2011 1 次提交
  19. 15 7月, 2011 1 次提交
  20. 08 7月, 2011 2 次提交
    • E
      public API: prefer unsigned int for flags · 18d561c7
      Eric Blake 提交于
      Most APIs use 'unsigned int flags'; but a few stragglers were using
      a signed value.  In particular, the vir*GetXMLDesc APIs were
      split-brain, with inconsistent choice of types.  Although it is
      an API break to use 'int' instead of 'unsigned int', it is ABI
      compatible (pre-compiled apps will have no difference in behavior),
      and generally apps can be recompiled without any issue (only rare
      apps that compiled with extremely high warning levels, or which
      pass libvirt API around as typed function pointers, would have to
      make any code changes to deal with the change).
      
      The migrate APIs use 'unsigned long flags', which can't be changed,
      due to ABI constraints.
      
      This patch intentionally touches only the public API, to prove the
      claim that most existing code (including driver callbacks and virsh)
      still compiles just fine in spite of the type change.
      
      * include/libvirt/libvirt.h.in (virConnectOpenAuth)
      (virDomainCoreDump, virDomainGetXMLDesc, virNetworkGetXMLDesc)
      (virNWFilterGetXMLDesc): Use unsigned int for flags.
      (virDomainHasCurrentSnapshot): Use consistent spelling.
      * src/libvirt.c (virConnectOpenAuth, virDomainCoreDump)
      (virDomainGetXMLDesc, virNetworkGetXMLDesc)
      (virNWFilterGetXMLDesc, do_open): Update accordingly.
      18d561c7
    • E
      maint: print flags in hex during debug · 313ac7fd
      Eric Blake 提交于
      Debugging decimal flags is a pain.
      
      * src/libvirt.c: Always print flags in hex.
      313ac7fd
  21. 28 6月, 2011 1 次提交
  22. 27 6月, 2011 1 次提交
    • E
      build: rename Vcpupin to VcpuPin · 28e45afc
      Eric Blake 提交于
      We already have a public virDomainPinVcpu, which implies that
      Pin and Vcpu are treated as separate words.  Unreleased commit
      e261987c introduced virDomainGetVcpupinInfo as the first public
      API that used Vcpupin, although we had prior internal uses of
      that spelling.  For consistency, change the spelling to be two
      words everywhere, regardless of whether pin comes first or last.
      
      * daemon/remote.c: Treat vcpu and pin as separate words.
      * include/libvirt/libvirt.h.in: Likewise.
      * src/conf/domain_conf.c: Likewise.
      * src/conf/domain_conf.h: Likewise.
      * src/driver.h: Likewise.
      * src/libvirt.c: Likewise.
      * src/libvirt_private.syms: Likewise.
      * src/libvirt_public.syms: Likewise.
      * src/libxl/libxl_driver.c: Likewise.
      * src/qemu/qemu_driver.c: Likewise.
      * src/remote/remote_driver.c: Likewise.
      * src/xen/xend_internal.c: Likewise.
      * tools/virsh.c: Likewise.
      * src/remote/remote_protocol.x: Likewise.
      * src/remote_protocol-structs: Likewise.
      Suggested by Matthias Bolte.
      28e45afc
  23. 25 6月, 2011 2 次提交
    • T
      vcpupin: introduce the new libvirt API (virDomainGetVcpupinInfo) · e261987c
      Taku Izumi 提交于
      This patch introduces a new libvirt API (virDomainGetVcpupinInfo),
      as a counterpart to virDomainPinVcpuFlags.
      
      We can use virDomainGetVcpus API to retrieve CPU affinity information,
      but can't use this API against inactive domains (at least in case of KVM),
      as it lacks a flags parameter.
      The usual thing is to add a new virDomainGetVcpusFlags, but that API name
      is already occupied by the counterpart to virDomainGetMaxVcpus, which
      has a completely different signature.
      
      The virDomainGetVcpupinInfo is the new API to retrieve CPU affinity
      information of active and inactive domains.  While the usual convention
      is to list an array before its length, this API violates that rule
      in order to be more like virDomainGetVcpus (where maxinfo was doing
      double-duty as the length of two different arrays).
      Signed-off-by: NTaku Izumi <izumi.taku@jp.fujitsu.com>
      e261987c
    • E
      remote: protect against integer overflow · 774b21c1
      Eric Blake 提交于
      Integer overflow and remote code are never a nice mix.
      
      This has existed since commit 56cd4140.
      
      * src/libvirt.c (virDomainGetVcpus): Reject overflow up front.
      * src/remote/remote_driver.c (remoteDomainGetVcpus): Avoid overflow
      on sending rpc.
      * daemon/remote.c (remoteDispatchDomainGetVcpus): Avoid overflow on
      receiving rpc.
      774b21c1
  24. 24 6月, 2011 3 次提交
    • E
      docs: document correct flag name · db323e3b
      Eric Blake 提交于
      When adding virDomainGetVcpusFlags in commit ea3f5c68, I did
      enough rebasing that the doc comments in libvirt.c no longer
      matched the final chosen enum names in libvirt.h.
      
      And now we've gone ahead and deprecated the names
      VIR_DOMAIN_VCPU_{LIVE,CONFIG}.
      
      * src/libvirt.c (virDomainGetVcpusFlags): Fix comment.
      db323e3b
    • E
      Revert "virDomainBlockPull: Implement the main entry points" · 6389bea9
      Eric Blake 提交于
      This reverts commit 6419f596.
      6389bea9
    • D
      Allow automatic kill of guests when a connection is closed · 3ba937da
      Daniel P. Berrange 提交于
      If an application is using libvirt + KVM as a piece of its
      internal infrastructure to perform a specific task, it can
      be desirable to guarentee the VM dies when the virConnectPtr
      disconnects from libvirtd. This ensures the app can't leak
      any VMs it was using. Adding VIR_DOMAIN_START_AUTOKILL as
      a flag when starting guests enables this to be done.
      
      * include/libvirt/libvirt.h.in: All VIR_DOMAIN_START_AUTOKILL
      * src/qemu/qemu_driver.c: Support automatic killing of guests
        upon connection close
      * tools/virsh.c: Add --autokill flag to 'start' and 'create'
        commands
      3ba937da
  25. 23 6月, 2011 2 次提交
  26. 17 6月, 2011 1 次提交