1. 23 9月, 2011 4 次提交
    • O
      Add unsafe cache mode support for disk driver · f887334d
      Oskari Saarenmaa 提交于
      QEMU 0.13 introduced cache=unsafe for -drive, this patch exposes
      it in the libvirt layer.
      
        * Introduced a new QEMU capability flag ($prefix_CACHE_UNSAFE),
          as even if $prefix_CACHE_V2 is set, we can't know if unsafe
          is supported.
      
        * Improved the reliability of qemu cache type detection.
      f887334d
    • D
      Fix synchronous reading of stream data · cb610092
      Daniel P. Berrange 提交于
      commit 984840a2 removed the
      notification of waiting calls when VIR_NET_CONTINUE messages
      arrive. This was to fix the case of a virStreamAbort() call
      being prematurely notified of completion.
      
      The problem is that sometimes there are dummy calls from a
      virStreamRecv() call waiting that *do* need to be notified.
      
      These dummy calls should have a status VIR_NET_CONTINUE. So
      re-add the notification upon VIR_NET_CONTINUE, but only if
      the waiter also has a status of VIR_NET_CONTINUE.
      
      * src/rpc/virnetclient.c: Notify waiting call if stream data
        arrives
      * src/rpc/virnetclientstream.c:  Mark dummy stream read packet
        with status VIR_NET_CONTINUE
      cb610092
    • M
      selinux: Correctly report warning if virt_use_nfs not set · 1888363d
      Michal Privoznik 提交于
      Previous patch c9b37fee tried to deal with virt_use_nfs. But
      setfilecon() returns EOPNOTSUPP on NFS so we need to move the
      warning to else branch.
      1888363d
    • P
      virsh: Improve virsh manual for virsh memtune command · c4111bd0
      Peter Krempa 提交于
      Commit 0a22f542 added --min-guarantee option for the memtune command.
      This option is supported only by the ESX hypervisor. This patch adds a
      statement about this fact, to prevent user confusion.
      
      This patch also adds explanation how to clear/set to unlimited the
      memory tunables. (documments the -1 value).
      c4111bd0
  2. 22 9月, 2011 13 次提交
    • O
      virsh: Do not ignore the specified flags for cmdSaveImageDefine · f858bcb2
      Osier Yang 提交于
      Introduced by commit 42c52d53, which added the support for new
      flags, but forgot to update the API use to pass the flags.
      f858bcb2
    • M
      qemu: Transfer inactive XML among cookie · c42e1c39
      Michal Privoznik 提交于
      If a domain has inactive XML we want to transfer it to destination
      when migrating with VIR_MIGRATE_PERSIST_DEST. In order to harm
      the migration protocol as least as possible, a optional cookie was
      chosen.
      c42e1c39
    • D
      Release of libvirt-0.9.6 · 508de7ee
      Daniel Veillard 提交于
      508de7ee
    • E
      snapshot: also delete empty directory · 61dbee0e
      Eric Blake 提交于
      The previous patch removed all snapshots, but not the directory
      where the snapshots lived, which is still a form of stale data.
      
      * src/qemu/qemu_domain.c (qemuDomainRemoveInactive): Wipe any
      snapshot directory.
      61dbee0e
    • E
      snapshot: remove snapshot metadata on transient exit · e485dcc9
      Eric Blake 提交于
      Commit 282fe1f0 documented that transient domains will auto-delete
      any snapshot metadata when the last reference to the domain is
      removed, and that management apps are in charge of grabbing any
      snapshot metadata prior to that point.  However, this was not
      actually implemented for qemu until now.
      
      * src/qemu/qemu_driver.c (qemudDomainCreate)
      (qemuDomainDestroyFlags, qemuDomainSaveInternal)
      (qemudDomainCoreDump, qemuDomainRestoreFlags, qemudDomainDefine)
      (qemuDomainUndefineFlags, qemuDomainMigrateConfirm3)
      (qemuDomainRevertToSnapshot): Clean up snapshot metadata.
      * src/qemu/qemu_migration.c (qemuMigrationPrepareAny)
      (qemuMigrationPerformJob, qemuMigrationPerformPhase)
      (qemuMigrationFinish): Likewise.
      * src/qemu/qemu_process.c (qemuProcessHandleMonitorEOF)
      (qemuProcessReconnect, qemuProcessReconnectHelper)
      (qemuProcessAutoDestroyDom): Likewise.
      e485dcc9
    • E
      snapshot: prepare to remove transient snapshot metadata · bcf974b9
      Eric Blake 提交于
      This patch is mostly code motion - moving some functions out
      of qemu_driver and into qemu_domain so they can be reused by
      multiple qemu_* files (since qemu_driver.h must not grow).
      It also adds a new helper function, qemuDomainRemoveInactive,
      which will be used in the next patch.
      
      * src/qemu/qemu_domain.h (qemuFindQemuImgBinary)
      (qemuDomainSnapshotWriteMetadata, qemuDomainSnapshotForEachQcow2)
      (qemuDomainSnapshotDiscard, qemuDomainSnapshotDiscardAll)
      (qemuDomainRemoveInactive): New prototypes.
      (struct qemu_snap_remove): New struct.
      * src/qemu/qemu_domain.c (qemuDomainRemoveInactive)
      (qemuDomainSnapshotDiscardAllMetadata): New functions.
      (qemuFindQemuImgBinary, qemuDomainSnapshotWriteMetadata)
      (qemuDomainSnapshotForEachQcow2, qemuDomainSnapshotDiscard)
      (qemuDomainSnapshotDiscardAll): Move here...
      * src/qemu/qemu_driver.c (qemuFindQemuImgBinary)
      (qemuDomainSnapshotWriteMetadata, qemuDomainSnapshotForEachQcow2)
      (qemuDomainSnapshotDiscard, qemuDomainSnapshotDiscardAll): ...from
      here.
      (qemuDomainUndefineFlags): Update caller.
      * src/conf/domain_conf.c (virDomainRemoveInactive): Doc fixes.
      bcf974b9
    • E
      snapshot: fix logic bug in qemu undefine · e6966fa7
      Eric Blake 提交于
      Commit 19f8c980 introduced VIR_DOMAIN_UNDEFINE_SNAPSHOTS_METADATA,
      with the intent that omitting the flag makes undefine fail, and
      including the flag deletes metadata.  But it used the wrong logic.
      Also, hoist the transient domain sooner, so that we don't
      accidentally remove metadata of a transient domain.
      
      * src/qemu/qemu_driver.c (qemuDomainUndefineFlags): Check correct
      flag value.
      e6966fa7
    • E
      sanlock: fix memory leak · a55f1892
      Eric Blake 提交于
      Detected by Coverity.  The only way to get to error_unlink is if
      path was successfully assigned, so the if was useless.  Meanwhile,
      there was a return statement that did not free path.
      
      * src/locking/lock_driver_sanlock.c
      (virLockManagerSanlockSetupLockspace): Fix mem-leak, and drop
      useless if.
      a55f1892
    • E
      virsh: fix regression in argv parsing · 466f9024
      Eric Blake 提交于
      Prior to commit 85d28108, we had an issue where:
      
      snapshot-create-as dom name --diskspec spec --diskspec spec
      
      failed to parse the second spec, because the first spec had marked
      that option as no longer requiring an argument.
      
      In commit 85d28108, I fixed it by making argv options no longer mark
      the option as seen.  But this in turn breaks mandatory argv options,
      which now complain that the argv option is missing.
      
      This patch reverts that part of 85d28108, and instead replaces it with
      fixes to no longer clear opts_need_arg of an argv argument.
      
      * tools/virsh.c (vshCmddefGetOption, vshCmddefGetData)
      (vshCommandParse): Fix option parsing for required argv option.
      (vshCmddefOptParse): Check that argv option is last.
      * tests/virsh-optparse: Enhance test.
      466f9024
    • O
      virsh: More friendly err if no pool is specified for looking up a vol · 2f059524
      Osier Yang 提交于
      There are 3 ways to lookup a volume, only virStorageVolLookupByName
      needs pool object. So if no --pool is specified, it will tries to
      get the volume via virStorageVolLookupByPath/virStorageVolLookupByKey.
      
      But if all 3 ways fails, and no --pool is specified, a friendly
      error might help the user get right way quickly.
      2f059524
    • O
      storage: Wait udev events are handled before removing lvm vol · bc4e5b43
      Osier Yang 提交于
      Related #BZ: https://bugzilla.redhat.com/show_bug.cgi?id=702260.
      
      There are two problems described in the BZ:
      1) "Can't remove open logical volume".
      2) "Unable to deactivate logical volume "foo""
      
      This patch just intends to fix 2), as 1) is expected if the vol
      is still used by something, and you never known if "lvchange -an"
      will fail or not either (sometime, it will succeed, sometimes not).
      We'd better not look for trouble, :-)
      
      For 2), that's caused by race between lvremove and udev event handling,
      the only workable way now is to wait the events handling are finished,
      though it might introduce latencies, as "udevadmin settle" exits
      after *all* events are handled, it's the only way we can fix
      the racing in libvirt layer.
      
      See https://bugzilla.redhat.com/show_bug.cgi?id=570359 for more
      details.
      bc4e5b43
    • A
      qemu: avoid dereferencing a NULL pointer · d93a08eb
      Alex Jia 提交于
      * src/qemu/qemu_process.c: Taking if (qemuDomainObjEndJob(driver, obj) == 0)
        true branch then 'obj' is NULL, virDomainObjIsActive(obj) and
        virDomainObjUnref(obj) will dereference NULL pointer.
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      d93a08eb
    • O
      tests: improve test failure diagnosis · 42b23434
      Oskari Saarenmaa 提交于
        * qemuhelptest prints test case name on failure.
      42b23434
  3. 21 9月, 2011 7 次提交
    • J
      qemu: Avoid loop of fake reboots · 3abadf82
      Jiri Denemark 提交于
      Once virDomainReboot is called for a domain, guest OS initiated shutdown
      would always result in reboot instead of shutdown. Only
      virDomainShutdown would actually shutd such domain down. That's because
      we forgot to reset fakeReboot flag once we asked the domain to reboot.
      3abadf82
    • J
      qemu: Fix shutdown regression with buggy qemu · f84aedad
      Jiri Denemark 提交于
      The commit that prevents disk corruption on domain shutdown
      (96fc4784) causes regression with QEMU
      0.14.* and 0.15.* because of a regression bug in QEMU that was fixed
      only recently in QEMU git. The affected versions of QEMU do not quit on
      SIGTERM if started with -no-shutdown, which we use to implement fake
      reboot. Since -no-shutdown tells QEMU not to quit automatically on guest
      shutdown, domains started using the affected QEMU cannot be shutdown
      properly and stay in a paused state.
      
      This patch disables fake reboot feature on such QEMU by not using
      -no-shutdown, which makes shutdown work as expected. However,
      virDomainReboot will not work in this case and it will report "Requested
      operation is not valid: Reboot is not supported with this QEMU binary".
      f84aedad
    • O
      API: prefer to use NULLSTR macro · e531f9a9
      Osier Yang 提交于
      e531f9a9
    • E
      remote: fix crash on OOM · 2b0803c6
      Eric Blake 提交于
      Bug introduced in commit 675464b1.  On an OOM, this would try to
      dereference a char* and free the contents as a pointer, which is
      doomed to failure.
      
      Adding a syntax check will prevent mistakes like this in the future.
      
      * cfg.mk (sc_prohibit_internal_functions): New syntax check.
      (exclude_file_name_regexp--sc_prohibit_internal_functions): Add
      exemptions.
      * daemon/remote.c (remoteRelayDomainEventIOError)
      (remoteRelayDomainEventIOErrorReason)
      (remoteRelayDomainEventGraphics, remoteRelayDomainEventBlockJob):
      Use correct free function.
      2b0803c6
    • E
      xen: use typical allocations · 7d7a7e29
      Eric Blake 提交于
      The next patch will add a syntax check that flags this usage in xen
      as awkward - while it was valid memory management, it was very hard
      to maintain.  Swapping to a more traditional allocation may be a bit
      slower, but easier to understand.
      
      * src/xen/xend_internal.c (xenDaemonListDomainsOld): Use two-level
      allocation, rather than abusing allocation function.
      (xenDaemonLookupByUUID): Update caller.
      7d7a7e29
    • O
      virsh: Remove useless codes of cmdVolPath · 08c4de59
      Osier Yang 提交于
      Variable "name" is never used in the codes, it's useless.
      08c4de59
    • E
      build: silence warning on 32-bit build · ad4036c3
      Eric Blake 提交于
      gcc warns when building libvirt 0.9.5 on a 32-bit machine:
      
      qemu/qemu_migration.c: In function 'qemuMigrationToFile':
      qemu/qemu_migration.c:2727:38: error: large integer implicitly truncated to unsigned type [-Woverflow]
      
      * src/qemu/qemu_domain.h (QEMU_DOMAIN_FILE_MIG_BANDWIDTH_MAX): Cap
      to long when building for 32-bit platform.
      ad4036c3
  4. 20 9月, 2011 16 次提交
    • D
      Release of libvirt-0.9.5 · a362f1f7
      Daniel Veillard 提交于
      * configure.ac docs/news.html.in libvirt.spec.in: update for the release
      * po/*.po*: fetch updated translations from transifex and rebuilt
      a362f1f7
    • D
      Fix crash on events due to allocation errors · 675464b1
      Daniel Veillard 提交于
      remoteRelayDomainEventBlockJob, remoteRelayDomainEventIOError,
      remoteRelayDomainEventIOErrorReason and remoteRelayDomainEventGraphics
      were using const string directly in rpc structure, before calling
      remoteDispatchDomainEventSend(). But that routine now frees up all
      the pointed allocated memory from the rpc structure and we end up
      with a double free.
      This now strdup() all the strings passed and provide mem_error goto
      labels to be used when an allocation error occurs.
      Note that the cleanup isn't completely finished because all relaying
      function also call make_nonnull_domain() which also allocate a string
      and never handle the error case. This patches doesn't try to address
      this as this is only error correctness a priori and touches far more
      functions in this module:
      
      * daemon/remote.c: fix string allocations and memory error handling
        for remoteRelayDomainEventBlockJob, remoteRelayDomainEventIOError,
        remoteRelayDomainEventIOErrorReason and remoteRelayDomainEventGraphics
      675464b1
    • D
      Update to require sanlock 1.8 for license compliance · 19ff0ddf
      Daniel P. Berrange 提交于
      Inexplicably the sanlock code all got placed under the GPLv2-only,
      so libvirt's use of sanlock introduces a license incompatibility.
      The sanlock developers have now rearranged the code such that there
      is a 'sanlock_client.so' which is LGPLv2+ while their daemon remains
      GPLv2-only. To use the new client library we need to call the new
      sanlock_init and sanlock_align APIs instead of sanlock_direct_init
      and sanlock_direct_align. These APIs calls are now routed via the
      sanlock daemon, instead of doing direct I/O calls to disk.
      
      For all this we require sanlock >= 1.8
      
      * configure.ac: Check for sanlock_client.so instead of sanlock.so
        and fix various comments
      * libvirt.spec.in: Mandate sanlock >= 1.8
      * src/Makefile.am: Link to -lsanlock_client
      * src/locking/lock_driver_sanlock.c: Use sanlock_init and
        sanlock_align
      19ff0ddf
    • O
      conf: Assign newDef of active domain as persistent conf if it is NULL · b4c3be59
      Osier Yang 提交于
      Libvirt loads the domain conf from status XML if it's running when
      starting up. The problem is there is no record of the original conf.
      (dom->newDef is NULL here).
      
      So libvirt won't be able to restore the domain conf to original one
      when destroying/shutdown. E.g.
      
      1) attach a device without "--persistent"
      2) restart libvirtd
      3) destroy domain
      4) start domain
      
      One will see the the disk still exists.
      
      This patch is to fix the peoblem by assigning persistent domain conf
      to dom->newDef if it's NULL and the domain is running.
      b4c3be59
    • O
      storage: Ensure the device path exists before refreshing disk pool · 891c6fd7
      Osier Yang 提交于
      Doing libvirt_parthelper on an not existed device path will get
      an unfriendly error message. This patch is to prohibit it.
      891c6fd7
    • O
      daemon: Error and exit if specified value for timeout is not valid · 232392b1
      Osier Yang 提交于
      Silently setting "timeout" as -1 if the specified value is invalid
      is a bit confused.
      232392b1
    • P
      Remove devname identifier from autogenerated RPC code · 21b5daa1
      Peter Krempa 提交于
      Patch 79cf07af missed one instance of "devname" in source for RPC code
      generator.
      21b5daa1
    • E
      virsh: tweak previous domblkstat patch · 6d1c11e5
      Eric Blake 提交于
      Translators are likely to botch trailing spacing; by doing the
      formatting outside of the translation, we can generally get
      better alignment.  Also, for consistency, use 'bytes read' to
      match 'bytes written'.
      
      * tools/virsh.c (domblkstat_output): Drop trailing space. Tweak
      rd_bytes output.
      (cmdDomblkstat, DOMBLKSTAT_LEGACY_PRINT): Update formatting.
      6d1c11e5
    • P
      virsh: doc: Fix supported driver types for attach-disk command · 2ad83bf4
      Peter Krempa 提交于
      Virsh man page lists driver types to be used with attach-device
      command, but does not specify that those are usable only with the XEN
      Hypervisor.
      
      This patch adds statement, that those options specified are applicable
      only on the Xen hypervisor and adds option usable with qemu emulator.
      
      This patch also changes type of error returned by QEMU driver if the
      user specifies incompatible driver type from VIR_ERR_INTERNAL_ERROR to
      VIR_ERR_CONFIG_UNSUPPORTED.
      2ad83bf4
    • E
      maint: Prefer names over email in 'git shortlog' · d6fb2943
      Eric Blake 提交于
      Alex recently committed some patches with just an email instead
      of a preferred name; this fixes things so 'git shortlog' gives
      nicer output.
      
      * .mailmap: Update.
      d6fb2943
    • P
      virsh: Add more human-friendly output of domblkstat command · 619077b9
      Peter Krempa 提交于
      Users of virsh complain that output of the domblkstat command
      is not intuitive enough. This patch adds explanation of fields
      returned by this command to the help section for domblkstat and
      the man page of virsh. Also a switch --human is added for
      domblkstat that prints the fields with more descriptive
      texts.
      
      This patch also changes sequence of the output fields and their
      names back to the order and spelling established by previous
      versions of virsh to maintain compatibility with scripts.
      
      Example of ordered and "translated" output:
      
      PRE-patch:
      
      virsh # domblkstat 1 vda
      vda wr_bytes 5170176
      vda wr_operations 511
      vda rd_bytes 82815488
      vda rd_operations 3726
      
      POST-patch:
      
      virsh # domblkstat 1 vda
      vda rd_req 3726
      vda rd_bytes 82815488
      vda wr_req 478
      vda wr_bytes 4965376
      
      Example of human readable output:
      
      virsh # domblkstat 1 vda --human
      Device: vda
       number of read operations:      3726
       number of read bytes:           82815488
       number of write operations:     478
       number of bytes written:        4965376
      
      https://bugzilla.redhat.com/show_bug.cgi?id=731656
      619077b9
    • A
      vmx: avoid memory leak · 6196fd1c
      ajia@redhat.com 提交于
      * src/vmx/vmx.c: fix memory leak, 'def' has a initial value 'NULL', so
        'goto cleanup' is perfected instead of adding a virConfFree before
        'return NULL'.
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      6196fd1c
    • A
      util: avoid memory leak · d02c4a18
      ajia@redhat.com 提交于
      Leak in pciGetVirtualFunctionIndex present since commit 17d64cab.
      
      * src/util/pci.c: fix memory leak.
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      d02c4a18
    • A
      remote: avoid memory leak · 809999b5
      ajia@redhat.com 提交于
      Leak present since introduction of remoteDomainBuildEventGraphics
      in commit 987e31ed.
      
      * src/remote/remote_driver.c: fix memory leak.
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      809999b5
    • A
      qemu: avoid memory leak · db3b32c4
      ajia@redhat.com 提交于
      Leak introduced in commit 036ad505, affects only error case.
      
      * src/qemu/qemu_command.c: fix memory leak.
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      db3b32c4
    • A
      daemon: avoid memory leak · 2fdd441a
      ajia@redhat.com 提交于
      Introduced in commit efa7fc9f.
      
      * daemon/remote.c: fix memory leak in remoteDispatchDomainBlockStatsFlags
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      2fdd441a