1. 26 4月, 2011 2 次提交
    • M
      Add virDomainEventRebootNew · 14a961ca
      Matthias Bolte 提交于
      This will be used in the ESX driver event handling.
      14a961ca
    • E
      build: make VIR_FREE do some type checking · 90d761ee
      Eric Blake 提交于
      We can exploit the fact that gcc warns about int-to-pointer conversion
      in ternary cond?(void*):(int) in order to prevent future mistakes of
      calling VIR_FREE on a scalar lvalue.  For example, between commits
      158ba873 and 802e2df9, we would have had this warning:
      
      cc1: warnings being treated as errors
      remote.c: In function 'remoteDispatchListNetworks':
      remote.c:3684:70: error: pointer/integer type mismatch in conditional expression
      
      There are still a number of places that malloc into a const char*;
      while it would probably be worth scrubbing them to use char*
      instead, that is a separate patch, so we have to cast away const
      in VIR_FREE for now.
      
      * src/util/memory.h (VIR_FREE): Make gcc warn about integers.
      Iteratively developed from a patch by Christophe Fergeau.
      90d761ee
  2. 25 4月, 2011 1 次提交
    • E
      threads: add one-time initialization support · 99de5990
      Eric Blake 提交于
      mingw lacks the counterpart to PTHREAD_MUTEX_INITIALIZER, so the
      best we can do is portably expose once-only runtime initialization.
      
      * src/util/threads.h (virOnceControlPtr): New opaque type.
      (virOnceFunc): New callback type.
      (virOnce): New prototype.
      * src/util/threads-pthread.h (virOnceControl): Declare.
      (VIR_ONCE_CONTROL_INITIALIZER): Define.
      * src/util/threads-win32.h (virOnceControl)
      (VIR_ONCE_CONTROL_INITIALIZER): Likewise.
      * src/util/threads-pthread.c (virOnce): Implement in pthreads.
      * src/util/threads-win32.c (virOnce): Implement in WIN32.
      * src/libvirt_private.syms: Export it.
      99de5990
  3. 24 4月, 2011 2 次提交
  4. 22 4月, 2011 5 次提交
    • K
      libvirt/qemu - clean up UpdateDevice for consolidation. · 9b8543b6
      KAMEZAWA Hiroyuki 提交于
      This patch strips reusable part of qemuDomainUpdateDeviceFlags()
      and consolidate it to qemuDomainModifyDeviceFlags().
      No functional changes.
      
      * src/qemu/qemu_driver.c
      (qemuDomainChangeDiskMediaLive) : pulled out code for updating disks.
      (qemuDomainUpdateDeviceLive) : core of UpdateDevice, extracted from
      UpdateDeviceFlags()
      (qemuDomainModifyDeviceFlags): add support for updating device in live domain.
      (qemuDomainUpdateDeviceFlags): reworked as a wrapper function of
      qemuDomainModifyDeviceFlags()
      Signed-off-by: NKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      9b8543b6
    • K
      libvirt/qemu - clean up At(De)tachDeviceFlags() for consolidation. · 19ad136f
      KAMEZAWA Hiroyuki 提交于
      clean up At(De)tachDeviceFlags() for consolidation.
      
      qemuDomainAttachDeviceFlags()/qemuDomainDetachFlags()/
      qemuDomainUpdateDeviceFlags() has similar logics and copied codes.
      
      This patch series tries to unify them to use shared code when it can.
      At first, clean up At(De)tachDeviceFlags() and devide it into functions.
      
      By this, this patch pulls out shared components between functions.
      Based on patch series by Eric Blake, I added some modification as
      switch-case with QEMU_DEVICE_ATTACH, QEMU_DEVICE_DETACH, QEMU_DEVICE_UPDATE
      
      * src/qemu/qemu_driver.c
      (qemuDomainAt(De)tachDeviceFlags) : pulled out to qemuDomainModifyDeviceFlags()
      (qemuDomainModifyDeviceFlags) : implements generic code for modifying domain.
      (qemuDomainAt(De)tachDeviceFlagsLive) : code for at(de)taching devices to
      domain in line. no changes in logic from old code.
      (qemuDomainAt(De)tachDeviceDiskLive) : for at(de)taching Disks.
      (qemuDomainAt(De)tachDeviceControllerLive) : for at(de)taching Controllers
      Signed-off-by: NKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      19ad136f
    • K
      libvirt/qemu - Centralize device modification in the more flexible APIs · 2160116f
      KAMEZAWA Hiroyuki 提交于
      Centralize device modification in the more flexible APIs, to allow future
      honoring of additional flags.  Explicitly reject the
      VIR_DOMAIN_DEVICE_MODIFY_FORCE flag on attach/detach.
      
      Based on Eric Blake<eblake@redhat.com>'s work.
      
      * src/qemu/qemu_driver.c
      (qemudDomainAttachDevice)(qemudDomainAttachDeviceFlags): Swap bodies,rename...
      (qemudDomainDetachDevice, qemudDomainDetachDeviceFlags): Likewise.
      Signed-off-by: NKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      2160116f
    • M
      Add support for s390(x) cpu options parsing · eb954ede
      Michal Privoznik 提交于
      Up to now we missed parser for cpuinfo on x390(x) machines. Those machines
      have only 1 thread, core, socket. What is missing is information about
      CPU frequency.
      eb954ede
    • D
      Fix QEMU tunnelled migration FD handling · 29fca785
      Daniel P. Berrange 提交于
      The two ends of the pipe used for feeding QEMU tunnelled
      migration data were interchanged, so QEMU got given the
      "write" end instead of the "read" end.
      
      The qemuMigrationPrepareTunnel method was also immediately
      closing the "write" end of the pipe, so the stream failed
      to actually write anything.
      
      * src/qemu/qemu_migration.c: Swap tunnelled migration
        pipe FDs & don't close pipe given to stream
      29fca785
  5. 21 4月, 2011 2 次提交
  6. 20 4月, 2011 2 次提交
  7. 19 4月, 2011 4 次提交
    • W
      qemu: fix the check of virDomainObjUnref()'s return value · d2fd997e
      Wen Congyang 提交于
      If vm is unlocked in virDomainObjUnref(), the return value is 0, not less
      than 0.
      d2fd997e
    • M
      Add cputune support to libxl driver · 68c5b6fb
      Markus Groß 提交于
      Here is a new version of this patch:
      https://www.redhat.com/archives/libvir-list/2011-April/msg00337.html
      
      v2:
        - store the cputune info for the whole runtime of the domain
        - remove cputune info when domain is destroyed
      
      The nodeGetInfo code had to be moved into a helper
      function to reuse it without a virConnectPtr.
      68c5b6fb
    • M
      Update and sort msg_gen_function list and mark unmarked messages · 78ef49ea
      Matthias Bolte 提交于
      Inspired by Eric Blake
      78ef49ea
    • E
      phyp: another simplification · a35af32c
      Eric Blake 提交于
      Rather than copying and pasting lots of code, factor it into a
      single helper function.
      
      This commit adds a warning if tighter integer parsing would fail
      due to any stray bytes after the number, but should not change
      any behavior other than the bug fix for phypNumDomainsGeneric
      looking only at numeric lines.
      
      * src/phyp/phyp_driver.c (phypExecInt): New function.
      (phypGetVIOSPartitionID, phypNumDomainsGeneric, phypGetLparID)
      (phypGetLparMem, phypGetLparCPUGeneric, phypGetRemoteSlot)
      (phypGetVIOSNextSlotNumber, phypAttachDevice)
      (phypGetStoragePoolSize, phypStoragePoolNumOfVolumes)
      (phypNumOfStoragePools, phypInterfaceDestroy)
      (phypInterfaceDefineXML, phypInterfaceLookupByName)
      (phypInterfaceIsActive, phypNumOfInterfaces): Use it.
      (phypNumDomainsGeneric): Correctly find numeric line.
      a35af32c
  8. 18 4月, 2011 3 次提交
    • D
      build: fix qemu build failure in previous patch · ce3ae1b0
      Daniel P. Berrange 提交于
      This last minute addition caused a build failure
      
      cc1: warnings being treated as errors
      qemu/qemu_process.c: In function 'qemuProcessHandleWatchdog':
      qemu/qemu_process.c:436:34: error: ignoring return value of 'virDomainObjUnref', declared with attribute warn_unused_result [-Wunused-result]
      make[3]: *** [libvirt_driver_qemu_la-qemu_process.lo] Error 1
      ce3ae1b0
    • W
      enhance processWatchdogEvent() · b060d2e5
      Wen Congyang 提交于
      This patch does the following two things:
      1. hold an extra reference while handling watchdog event
         If the domain is not persistent, and qemu quits unexpectedly before
         calling processWatchdogEvent(), vm will be freed and the function
         processWatchdogEvent() will be dangerous.
      
      2. unlock qemu driver and vm before returning from processWatchdogEvent()
         When the function processWatchdogEvent() failed, we only free wdEvent,
         but forget to unlock qemu driver and vm, free dumpfile.
      b060d2e5
    • W
      qemu: avoid qemu_driver being unlocked twice when virThreadPoolNew() failed · 847efb32
      Wen Congyang 提交于
      We do not lock qemu_driver when calling virThreadPoolNew(). If it failed,
      we will unlock qemu_driver. It is dangerous.
      
      We may use this pool during auto starting domains. So we must create it before
      calling qemuAutostartDomains(). Otherwise, libvirtd will crash.
      847efb32
  9. 17 4月, 2011 3 次提交
  10. 16 4月, 2011 10 次提交
    • W
      build: include esx_vi.generated.* into dist file · ffbdf3e1
      Wen Congyang 提交于
      commit d4601696 introduces two more generated files: esx_vi.generated.h
      and esx_vi.generated.h. But we do not include them into dist file.
      It will break building if using dist file to build.
      ffbdf3e1
    • E
      phyp: avoid memory leaks in command values · 0bd34a9d
      Eric Blake 提交于
      * src/phyp/phyp_driver.c (phypExecBuffer): New function. Use it
      throughout file for less code, and for plugging a few leaks.
      0bd34a9d
    • E
      phyp: use consistent return string handling · a1b46e71
      Eric Blake 提交于
      Use the name 'ret' for all phypExec results, to make it easier
      to wrap phypExec.  Don't allow a possibly NULL ret through printf.
      
      * src/phyp/phyp_driver.c (phypBuildVolume, phypDestroyStoragePool)
      (phypBuildStoragePool, phypBuildLpar): Avoid NULL dereference.
      (phypInterfaceDestroy): Avoid redundant free.
      (phypVolumeLookupByPath, phypVolumeGetPath): Use consistent
      naming.
      a1b46e71
    • E
      phyp: prefer memcpy over memmove when legal · e00c892f
      Eric Blake 提交于
      * src/phyp/phyp_driver.c (phypUUIDTable_AddLpar)
      (phypGetLparUUID, phypGetStoragePoolUUID, phypVolumeGetXMLDesc)
      (phypGetStoragePoolXMLDesc): Use faster method.
      e00c892f
    • E
      phyp: use consistent style for labels · f6178522
      Eric Blake 提交于
      * src/phyp/phyp_driver.c: Match label style of rest of project.
      (phypExec, phypUUIDTable_Pull): Drop an extra label.
      f6178522
    • E
      phyp: more return handling cleanup · 444306d5
      Eric Blake 提交于
      * src/phyp/phyp_driver.c (phypInterfaceDestroy)
      (phypInterfaceDefineXML, phypInterfaceLookupByName)
      (phypInterfaceIsActive, phypListInterfaces, phypNumOfInterfaces):
      Clean up return handling of recent additions.
      444306d5
    • E
      phyp: avoid memory leak on failure · 8f03c6e8
      Eric Blake 提交于
      * src/phyp/phyp_driver.c (phypUUIDTable_Init): Avoid memory leak
      on error.
      8f03c6e8
    • E
      phyp: avoid a logic bug · ef6147c4
      Eric Blake 提交于
      Ever since commit ebc46f, the destroy function built two command
      variants but only used one.  I went with the variant that matches
      the idiom used in the counterpart of phypBuildStoragePool.
      
      * src/phyp/phyp_driver.c (phypDestroyStoragePool): Avoid
      clobbering cmd.  Fix error message typo.
      ef6147c4
    • E
      maint: use lighter-weight function for straight appends · dbe3bad9
      Eric Blake 提交于
      It costs quite a few processor cycles to go through printf parsing
      just to determine that we only meant to append.
      
      * src/xen/xend_internal.c (xend_op_ext): Consolidate multiple
      printfs into one.
      * src/qemu/qemu_command.c (qemuBuildWatchdogDevStr)
      (qemuBuildUSBInputDevStr, qemuBuildSoundDevStr)
      (qemuBuildSoundCodecStr, qemuBuildVideoDevStr): Likewise.
      (qemuBuildCpuArgStr, qemuBuildCommandLine): Prefer virBufferAdd
      over virBufferVsprintf for trivial appends.
      * src/phyp/phyp_driver.c (phypExec, phypUUIDTable_Push)
      (phypUUIDTable_Pull): Likewise.
      * src/conf/nwfilter_conf.c (macProtocolIDFormatter)
      (arpOpcodeFormatter, formatIPProtocolID, printStringItems)
      (virNWFilterPrintStateMatchFlags, virNWIPAddressFormat)
      (virNWFilterDefFormat): Likewise.
      * src/security/virt-aa-helper.c (main): Likewise.
      * src/util/sexpr.c (sexpr2string): Likewise.
      * src/xenxs/xen_sxpr.c (xenFormatSxprChr): Likewise.
      * src/xenxs/xen_xm.c (xenFormatXMDisk): Likewise.
      dbe3bad9
    • M
      esx: Fix gcc 4.6 warning about initialized but unused variables · 1afaafe3
      Matthias Bolte 提交于
      This warnings come from partly generated code. Therefore, the best
      solution is to mark them as potentially being unused using the
      ATTRIBUTE_UNUSED macro. This is suggested by the gcc documentation.
      
      Reported by Christophe Fergeau
      1afaafe3
  11. 15 4月, 2011 6 次提交
    • E
      maint: silence cppi warnings · e6923526
      Eric Blake 提交于
      * src/nodeinfo.c (linuxNodeInfoCPUPopulate): Fix indentation of
      last patch.
      e6923526
    • L
      network: truncate bridges' dummy tap device names to IFNAMSIZ (15) chars · 020ad8d1
      Laine Stump 提交于
      This patch addresses:
      
         https://bugzilla.redhat.com/show_bug.cgi?id=694382
      
      In order to give each libvirt-created bridge a fixed MAC address,
      commit 5754dbd5, added code to create
      a dummy tap device with guaranteed lowest MAC address and attach it to
      the bridge. This tap device was given the name "${bridgename}-nic".
      However, an interface device name must be IFNAMSIZ (15) characters or
      less, so a valid ${bridgename} such as "verylongname123" (15
      characters) would lead to an invalid tap device name
      ("verylongname123-nic" - 19 characters), and that in turn led to a
      failure to bring up the network.
      
      The solution is to shorten the part of the original name used to
      generate the tap device name. However, simply truncating it is
      insufficient, because the last few characters of an interface name are
      often a number used to indicate one of a list of several similar
      devices (for example, "verylongname123", "verylongname124", etc) and
      simple truncation would lead to duplicate names (eg "verlongnam-nic"
      and "verylongnam-nic"). So instead we take the first 8 characters of
      $bridgename ("verylong" in the example), add on the final 3 bytes
      ("123"), then add "-nic" (so "verylong123-nic").  Not pretty, but it
      is much more likely to generate a unique name, and is reproducible
      (unlike, say, a random number).
      020ad8d1
    • S
      ppc: Enable starting of Qemu VMs on ppc host · d21f9d5a
      Stefan Berger 提交于
      Due to differences in /proc/cpuinfo the parsing of the cpu data is
      different between architectures. On PPC /proc/cpuinfo looks like this:
      
      [original formatting with tabs]
      
      processor    : 0
      cpu          : PPC970MP, altivec supported
      clock        : 2297.700000MHz
      revision     : 1.1 (pvr 0044 0101)
      
      processor    : 1
      cpu          : PPC970MP, altivec supported
      clock        : 2297.700000MHz
      revision     : 1.1 (pvr 0044 0101)
      
      [..]
      
      timebase     : 14318000
      platform     : pSeries
      model        : IBM,8844-AC1
      machine      : CHRP IBM,8844-AC1
      
      The patch adapts the parsing of the data found in /proc/cpuinfo.
      
      /sys/devices/system/cpu/cpuX/topology/physical_package_id also
      always returns -1. Check for it on ppc and make it '0' if found negative.
      d21f9d5a
    • S
      Migrate VMs between different-endianess hosts · cf2145d5
      Stefan Berger 提交于
      This patch enables the migration of Qemu VMs between hosts of different endianess. I tested this by migrating a i686 VM between a x86 and ppc64 host.
      
      I am converting the 'int's in the VM's state header to uint32_t assuming this doesn't break compatibility with existing deployments other than Linux.
      cf2145d5
    • C
      Fix gcc 4.6 warnings in vbox_tmpl.c · c59f3d8d
      Christophe Fergeau 提交于
      c59f3d8d
    • C
      Fix gcc 4.6 warnings · 454e50be
      Christophe Fergeau 提交于
      gcc 4.6 warns when a variable is initialized but isn't used afterwards:
      
      vmware/vmware_driver.c:449:18: warning: variable 'vmxPath' set but not used [-Wunused-but-set-variable]
      
      This patch fixes these warnings. There are still 2 offending files:
      
      - vbox_tmpl.c: the variable is used inside an #ifdef and is assigned several
        times outside of #ifdef. Fixing the warning would have required wrapping
        all the assignment inside #ifdef which hurts readability.
      
      vbox/vbox_tmpl.c: In function 'vboxAttachDrives':
      vbox/vbox_tmpl.c:3918:22: warning: variable 'accessMode' set but not used [-Wunused-but-set-variable]
      
      - esx_vi_types.generated.c: the name implies it's generated code and I
        didn't want to dive into the code generator
      
      esx/esx_vi_types.generated.c: In function 'esxVI_FileQueryFlags_Free':
      esx/esx_vi_types.generated.c:1203:3: warning: variable 'item' set but not used [-Wunused-but-set-variable]
      454e50be