1. 05 8月, 2010 2 次提交
    • E
      build: rerun bootstrap if po/Makevars got nuked · 5f211d4b
      Eric Blake 提交于
      There has been a frequent complaint of:
      
      make[2]: Entering directory `/home/remote/eblake/libvirt/po'
      make[2]: *** No rule to make target `/config.status', needed by `Makefile'.  Stop.
      
      It happens after nuking and regenerating the po directory,
      which is a common action after running anything like
      'make dist' or 'make rpm' that dirties all the .po files.
      
      Teach autogen.sh that it must regenerate po/Makevars to avoid
      the missing variable declaration, and teach cfg.mk to recognize
      that a nuked po directory is cause to rerun autogen.sh.
      
      * cfg.mk (_update_required): Check for po/Makevars.
      * autogen.sh (bootstrap): Run bootstrap if it got lost.
      Diagnosed by Justin Clift.
      5f211d4b
    • D
      Do not use boot=on on IDE device · 634ea3fa
      Daniel Veillard 提交于
      the followup on the boot=on problem, basically it's not needed to
      specify it when booting out of IDE devices when using KVM
      * src/qemu/qemu_conf.c: do not use boot=on for IDE devices
      * tests/qemuxml2argvdata/qemuxml2argv*.args: this changes the output
        for 5 of the tests
      634ea3fa
  2. 04 8月, 2010 3 次提交
    • D
      Release of libvirt-0.8.3 · d3d33c82
      Daniel Veillard 提交于
      * configure.ac docs/news.html.in libvirt.spec.in: updates
      * po/*.po*: update and regenerated
      d3d33c82
    • J
      qemu: Fix PCI address allocation · bf0bf4e7
      Jiri Denemark 提交于
      Patch version revamped by Eric Blake <eblake@redhat.com> of Jiri
      Denemark <jdenemar@redhat.com> original patch
      
      When attaching a PCI device which doesn't explicitly set its PCI
      address, libvirt allocates the address automatically. The problem is
      that when checking which PCI address is unused, we only check for those
      with slot number higher than the highest slot number ever used.
      
      Thus attaching/detaching such device several times in a row (31 is the
      theoretical limit, less then 30 tries are enough in practise) makes any
      further device attachment fail. Furthermore, attaching a device with
      predefined PCI address to 0:0:31 immediately forbids attachment of any
      PCI device without explicit address.
      
      This patch changes the logic so that we always check all PCI addresses
      before we say there is no PCI address available.
      
      Modifications from v1: revert back to remembering the last slot
      reserved, but allow wraparound to not be limited by the end.
      In this way, slots are still assigned in the same order as
      before the patch, rather than filling in the gaps closest to
      0 and risking making windows guests mad.
      
      * src/qemu/qemu_conf.c: fix pci reservation code to do a round-robbin
        check of all available PCI splot availability before failing.
      bf0bf4e7
    • J
      OpenVZ: implement suspend/resume driver APIs · 9cbc3c8e
      Jean-Baptiste Rouault 提交于
      * src/openvz/openvz_driver.c: implements openvzDomainSuspend and
        openvzDomainResume
      9cbc3c8e
  3. 03 8月, 2010 13 次提交
  4. 02 8月, 2010 5 次提交
    • L
      Add iptables rule to fixup DHCP response checksum. · fd5b15ff
      Laine Stump 提交于
      This patch attempts to take advantage of a newly added netfilter
      module to correct for a problem with some guest DHCP client
      implementations when used in conjunction with a DHCP server run on the
      host systems with packet checksum offloading enabled.
      
      The problem is that, when the guest uses a RAW socket to read the DHCP
      response packets, the checksum hasn't yet been fixed by the IP stack,
      so it is incorrect.
      
      The fix implemented here is to add a rule to the POSTROUTING chain of
      the mangle table in iptables that fixes up the checksum for packets on
      the virtual network's bridge that are destined for the bootpc port (ie
      "dhcpc", ie port 68) port on the guest.
      
      Only very new versions of iptables will have this support (it will be
      in the next upstream release), so a failure to add this rule only
      results in a warning message. The iptables patch is here:
      
        http://patchwork.ozlabs.org/patch/58525/
      
      A corresponding kernel module patch is also required (the backend of
      the iptables patch) and that will be in the next release of the
      kernel.
      fd5b15ff
    • C
      Fix the ACS checking in the PCI code. · 86b043ad
      Chris Lalancette 提交于
      When trying to assign a PCI device to a guest, we have
      to check that all bridges upstream of that device support
      ACS.  That means that we have to find the parent bridge of
      the current device, check for ACS, then find the parent bridge
      of that device, check for ACS, etc.  As it currently stands,
      the code to do this iterates through all PCI devices on the
      system, looking for a device that has a range of busses that
      included the current device's bus.
      
      That check is not restrictive enough, though.  Depending on
      how we iterated through the list of PCI devices, we could first
      find the *topmost* bridge in the system; since it necessarily had
      a range of busses including the current device's bus, we
      would only ever check the topmost bridge, and not check
      any of the intermediate bridges.
      
      Note that this also caused a fairly serious bug in the
      secondary bus reset code, where we could erroneously
      find and reset the topmost bus instead of the inner bus.
      
      This patch changes pciGetParentDevice() so that it first
      checks if a bridge device's secondary bus exactly matches
      the bus of the device we are looking for.  If it does, we've
      found the correct parent bridge and we are done.  If it does not,
      then we check to see if this bridge device's busses *include* the
      bus of the device we care about.  If so, we mark this bridge device
      as best, and go on.  If we later find another bridge device whose
      busses include this device, but is more restrictive, then we
      free up the previous best and mark the new one as best.  This
      algorithm ensures that in the normal case we find the direct
      parent, but in the case that the parent bridge secondary bus
      is not exactly the same as the device, we still find the
      correct bridge.
      
      This patch was tested by me on a 4-port NIC with a
      bridge without ACS (where assignment failed), a 4-port
      NIC with a bridge with ACS (where assignment succeeded),
      and a 2-port NIC with no bridges (where assignment
      succeeded).
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      86b043ad
    • C
      Free up memballoon def. · 32c6a959
      Chris Lalancette 提交于
      Forgetting to do this was causing a memory leak.
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      32c6a959
    • C
      ab85b5ea
    • C
      Fix a bogus warning when parsing <hostdev> · f72e4a9d
      Chris Lalancette 提交于
      When parsing hostdev, the following message would be emitted:
      
      10:17:19.052: error : virDomainHostdevDefParseXML:3748 : internal error unknown node alias
      
      However, alias is appropriately parsed in
      virDomainDeviceInfoParseXML anyway.  Disable the error message
      in the initial XML parsing loop.
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      f72e4a9d
  5. 01 8月, 2010 1 次提交
  6. 31 7月, 2010 5 次提交
    • M
      Update ID after stopping a domain · e670d394
      Matthias Bolte 提交于
      e670d394
    • J
      openvzDomainCreateWithFlags: set domain id to the correct value · fd81a097
      Jean-Baptiste Rouault 提交于
      When an openvz domain is defined with virDomainDefineXML,
      domain id is set to -1. A call to virDomainGetInfo after
      starting the domain would then fail because this invalid
      id is passed to openvzGetProcessInfo.
      fd81a097
    • E
      storage: kill dead stores · 549b8399
      Eric Blake 提交于
      Found by clang.  Clang complained that virStorageBackendProbeTarget
      could dereference NULL if backingStoreFormat was NULL, but since all
      callers passed a valid pointer, I added attributes instead of null
      checks.
      
      * src/storage/storage_backend.c
      (virStorageBackendQEMUImgBackingFormat): Kill dead store.
      * src/storage/storage_backend_fs.c (virStorageBackendProbeTarget):
      Likewise.  Skip null checks, by adding attributes.
      549b8399
    • E
      qemu: kill some dead stores · 68e4be71
      Eric Blake 提交于
      Spotted by clang.
      
      * src/qemu/qemu_monitor.c (qemuMonitorClose): Kill dead store.
      * src/qemu/qemu_driver.c (qemudDomainSaveImageStartVM): Likewise.
      68e4be71
    • E
      network: kill dead store · c52b90ed
      Eric Blake 提交于
      * src/network/bridge_driver.c (networkDefine): Kill dead store.
      c52b90ed
  7. 30 7月, 2010 11 次提交
    • M
      xenapi: Update ID after starting a domain · 2f5097f3
      Matthias Bolte 提交于
      2f5097f3
    • M
      esx: Update ID after starting a domain · 6139b274
      Matthias Bolte 提交于
      6139b274
    • C
      Fix DMI uuid parsing. · 435fa6d7
      Chris Lalancette 提交于
      valgrind was complaining that virUUIDParse was depending on
      an uninitialized value.  Indeed it was; virSetHostUUIDStr()
      didn't initialize the dmiuuid buffer to 0's, meaning that
      anything after the string read from /sys was uninitialized.
      Clear out the dmiuuid buffer before use, and make sure to
      always leave a \0 at the end.
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      435fa6d7
    • D
      Do not activate boot=on on devices when not using KVM · e7da8722
      Daniel Veillard 提交于
        Basically the 'boot=on' boot selection device is something present in
      KVM but not in upstream QEmu, as a result if we boot a QEmu domain
      without KVM acceleration we must disable boot=on ... even if the front
      end kvm binary expose that capability in the help page.
      
      * src/qemu/qemu_conf.c: in qemudBuildCommandLine if -no-kvm
        is passed, then deactivate QEMUD_CMD_FLAG_DRIVE_BOOT
      e7da8722
    • C
      Fix a memory leak in the qemudBuildCommandLine. · 4313e1b9
      Chris Lalancette 提交于
      ADD_ARG_LIT should only be used for literal arguments,
      since it duplicates the memory.  Since virBufferContentAndReset
      is already allocating memory, we should only use ADD_ARG.
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      4313e1b9
    • M
      esx: Fix freeing of heterogeneous lists · 5cff36e3
      Matthias Bolte 提交于
      Always call the free function of the base type. The base type
      function then dynamically dispatches the call to the free function
      for the actual type.
      5cff36e3
    • M
      c38e2f7a
    • M
      esx: Improve blocked task detection and fix race condition · 25e34b70
      Matthias Bolte 提交于
      esxVI_WaitForTaskCompletion can take a UUID to lookup the
      corresponding domain and check if the current task for it
      is blocked by a question. It calls another function to do
      this: esxVI_LookupAndHandleVirtualMachineQuestion looks up
      the VirtualMachine and checks for a question. If there is
      a question it calls esxVI_HandleVirtualMachineQuestion to
      handle it.
      
      If there was no question or it has been answered the call
      to esxVI_LookupAndHandleVirtualMachineQuestion returns 0.
      If any error occurred during the lookup and answering
      process -1 is returned. The problem with this is, that -1
      is also returned when there was no error but the question
      could not be answered. So esxVI_WaitForTaskCompletion cannot
      distinguish between this two situations and reports that a
      question is blocking the task even when there was actually
      another problem.
      
      This inherent problem didn't surface until vSphere 4.1 when
      you try to define a new domain. The driver tries to lookup
      the domain that is just in the process of being registered.
      There seems to be some kind of race condition and the driver
      manages to issue a lookup command before the ESX server was
      able to register the domain. This used to work before.
      
      Due to the return value problem described above the driver
      reported a false error message in that case.
      
      To solve this esxVI_WaitForTaskCompletion now takes an
      additional occurrence parameter that describes whether or
      not to expect the domain to be existent. Also add a new
      parameter to esxVI_LookupAndHandleVirtualMachineQuestion
      that allows to distinguish if the call returned -1 because
      of an actual error or because the question could not be
      answered.
      25e34b70
    • E
      esx: silence spurious compiler warning · 2c216d95
      Eric Blake 提交于
      * src/esx/esx_vi_types.c (_DESERIALIZE_NUMBER)
      (ESX_VI__TEMPLATE__DESERIALIZE_NUMBER): Add range check to shut up
      gcc 4.5.0 regarding long long.
      2c216d95
    • E
      build: distribute libvirt_qemu.syms · 701f356a
      Eric Blake 提交于
      * src/Makefile.am (EXTRA_DIST): Ensure 'make distcheck' and
      'rpmbuild' can reproduce a build.
      * daemon/Makefile.am (DAEMON_SOURCES): Likewise.
      701f356a
    • E
      build: restore operation of bit-rotted 'make cov' · e7064aa6
      Eric Blake 提交于
      './autobuild.sh' with lcov installed discovered that our
      coverage support has been bit-rotting for a while.  This
      restores it back to a successful state, although I have
      not yet spent any time looking through the resulting files to
      look for low-hanging fruit in the unit test coverage front.
      
      * configure.ac: Clear COMPILER_FLAGS at right place.
      * Makefile.am (cov): Newer genhtml no longer likes plain -s.
      * m4/compiler-flags.m4 (gl_COMPILER_FLAGS): Don't AC_SUBST
      COMPILER_FLAGS; it is a shell variable for use in configure only.
      * src/Makefile.am (AM_CFLAGS, AM_LDFLAGS): New variables, to make
      it easier to provide global flag additions.  Use throughout, to
      uniformly apply coverage flags.
      * .gitignore: Globally ignore gcov output.
      * daemon/.gitignore: Simplify.
      * src/.gitignore: Likewise.
      * tests/.gitignore: Likewise.
      e7064aa6