1. 27 9月, 2011 9 次提交
    • L
      qemu: add ability to set PCI device "rombar" on or off · dc79852a
      Laine Stump 提交于
      This patch was made in response to:
      
        https://bugzilla.redhat.com/show_bug.cgi?id=738095
      
      In short, qemu's default for the rombar setting (which makes the
      firmware ROM of a PCI device visible/not on the guest) was previously
      0 (not visible), but they recently changed the default to 1
      (visible). Unfortunately, there are some PCI devices that fail in the
      guest when rombar is 1, so the setting must be exposed in libvirt to
      prevent a regression in behavior (it will still require explicitly
      setting <rom bar='off'/> in the guest XML).
      
      rombar is forced on/off by adding:
      
        <rom bar='on|off'/>
      
      inside a <hostdev> element that defines a PCI device. It is currently
      ignored for all other types of devices.
      
      At the moment there is no clean method to determine whether or not the
      rombar option is supported by QEMU - this patch uses the advice of a
      QEMU developer to assume support for qemu-0.12+. There is currently a
      patch in the works to put this information in the output of "qemu-kvm
      -device pci-assign,?", but of course if we switch to keying off that,
      we would lose support for setting rombar on all the versions of qemu
      between 0.12 and whatever version gets that patch.
      dc79852a
    • E
      spec: F15 still uses cgconfig, RHEL lacks hyperv · ba6cbb18
      Eric Blake 提交于
      Commit ecd8725c dropped attempts to probe the cgconfig service on
      new enough Fedora where systemd took over that aspect of the system,
      but mistakenly used F14 instead of F15 as the cutoff point.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=741358
      
      Also, RHEL does not include HyperV support yet.
      
      * libvirt.spec.in (with_cgconfig): Check cgconfig service in F15.
      (%{?rhel}): Provide default for with_hyperv.
      ba6cbb18
    • J
      qemu: Relax -no-shutdown check to [0.14.0, 0.15.50) · 75e31492
      Jiri Denemark 提交于
      SIGTERM handling for -no-shutdown is already fixed in qemu git and
      libvirt can safely use it. The downside is that 0.15.50 version of qemu
      can be any qemu compiled from git, even that without the fix for
      SIGTERM. However, I think this patch is worth it since excluding 0.15.50
      from the check makes testing current qemu with libvirt much easier and
      someone running qemu from git should be able to rebuild fixed qemu from
      git if they hit the problem with a hang on shutdown.
      75e31492
    • J
      virsh: Better document --copy-storage migrate options · 2c1a3dd8
      Jiri Denemark 提交于
      Both --copy-storage-{all,inc} options require disk images to be present
      on destination host.
      2c1a3dd8
    • J
      virsh: Enhance documentation of commands starting jobs · d82ce384
      Jiri Denemark 提交于
      Some virsh commands start a (long-running) job that can be monitored
      using domjobinfo and aborted with domjobabort. Let's be explicit about
      this in virsh man page.
      d82ce384
    • M
      virLockManagerNopInit: Rename flags to unused_flags · 62cb8ad7
      Michal Privoznik 提交于
      As these might be not used and make syntax-check complains about checking
      them via virCheckFlags.
      62cb8ad7
    • P
      daemon: Don't remove pidfiles in init scripts · 831977df
      Peter Krempa 提交于
      Init scripts removed pid file of the daemon. Removing pid files may be
      harmful as new api for crash-safe pidfiles is used (introduced by
      c8a3a265).
      831977df
    • M
      debug: Annotate some variables as unused · 45ad3d69
      Michal Privoznik 提交于
      as they are not used with debugging turned off.
      45ad3d69
    • O
      storage: Do not break the whole vol lookup process in the middle · 05e2fc51
      Osier Yang 提交于
      * src/storage/storage_driver.c: As virStorageVolLookupByPath lookups
      all the pool objs of the drivers, breaking when failing on getting
      the stable path of the pool will just breaks the whole lookup process,
      it can cause the API fails even if the vol exists indeed. It won't get
      any benefit. This patch is to fix it.
      05e2fc51
  2. 24 9月, 2011 1 次提交
  3. 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
  4. 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
  5. 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
  6. 20 9月, 2011 6 次提交
    • 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