1. 10 12月, 2011 3 次提交
  2. 09 12月, 2011 2 次提交
    • S
      Pass the VM's UUID into the nwfilter subsystem · 33eb3567
      Stefan Berger 提交于
      A preparatory patch for DHCP snooping where we want to be able to
      differentiate between a VM's interface using the tuple of
      <VM UUID, Interface MAC address>. We assume that MAC addresses could
      possibly be re-used between different networks (VLANs) thus do not only
      want to rely on the MAC address to identify an interface.
      
      At the current 'final destination' in virNWFilterInstantiate I am leaving
      the vmuuid parameter as ATTRIBUTE_UNUSED until the DHCP snooping patches arrive.
      (we may not post the DHCP snooping patches for 0.9.9, though)
      
      Mostly this is a pretty trivial patch. On the lowest layers, in lxc_driver
      and uml_conf, I am passing the virDomainDefPtr around until I am passing
      only the VM's uuid into the NWFilter calls.
      33eb3567
    • S
      nwfilter: cleanup return codes in nwfilter subsystem · 95ff5899
      Stefan Berger 提交于
      This patch cleans up return codes in the nwfilter subsystem.
      
      Some functions in nwfilter_conf.c (validators and formatters) are
      keeping their bool return for now and I am converting their return
      code to true/false.
      
      All other functions now have failure return codes of -1 and success
      of 0.
      
      [I searched for all occurences of ' 1;' and checked all 'if ' and
      adapted where needed. After that I did a grep for 'NWFilter' in the source
      tree.]
      95ff5899
  3. 08 12月, 2011 3 次提交
    • P
      Clean up qemuBuildCommandLine to remove x86-specific · 5e6ce1c9
      Prerna Saxena 提交于
       assumptions from generic code.
      
      This implements the minimal set of changes needed in libvirt to launch a
      PowerPC-KVM based guest.
      It removes x86-specific assumptions about choice of serial driver backend
      from generic qemu guest commandline generation code.
      It also restricts the ACPI capability to be available for an x86 or
      x86_64 domain.
      This is not a complete solution -- it still does not guarantee libvirt
      the capability to flag non-supported options in guest XML. (Eg, an ACPI
      specification in a PowerPC guest XML will still get processed, even
      though qemu-system-ppc64 does not support it while qemu-system-x86_64 does.)
      This drawback exists because libvirt falls back on qemu to query supported
      features, and qemu '-h' blindly lists all capabilities -- irrespective
      of whether they are available while emulating a given architecture or not.
      The long-term solution would be for qemu to list out capabilities based
      on architecture and platform -- so that libvirt can cleanly make out what
      devices are supported on an arch (say 'ppc64') and platform (say, 'mac99').
      Signed-off-by: NPrerna Saxena <prerna@linux.vnet.ibm.com>
      5e6ce1c9
    • P
      Add support for ppc64 qemu · 9bb8064d
      Prerna Saxena 提交于
      This enables libvirt to select the correct qemu binary (qemu-system-ppc64)
      for a guest vm based on arch 'ppc64'.
      Also, libvirt is enabled to correctly parse the list of supported PowerPC
      CPUs, generated by running 'qemu-system-ppc64 -cpu ?'
      Signed-off-by: NPrerna Saxena <prerna@linux.vnet.ibm.com>
      Acked-by: NStefan Berger <stefanb@linux.vnet.ibm.com>
      9bb8064d
    • J
      Prevent crash of libvirtd when attaching to existing qemu process · 28423019
      Jim Fehlig 提交于
      With security_driver set to "none" in /etc/libvirt/qemu.conf,
      libvirtd would crash when attempted to attach to an existing
      qemu process.  Only copy the security model if it actually exists.
      28423019
  4. 07 12月, 2011 1 次提交
    • J
      qemu: Ignore shutdown event from destroyed domain · 97652044
      Jiri Denemark 提交于
      During virDomainDestroy, QEMU may emit SHUTDOWN event as a response to
      SIGTERM and since domain object is still locked, the event is processed
      after the domain is destroyed. We need to ignore this event in such case
      to avoid changing domain state from shutoff to shutdown.
      97652044
  5. 05 12月, 2011 2 次提交
    • J
      qemu: Rework handling of shutdown event · 38527c9a
      Jiri Denemark 提交于
      When QEMU guest finishes its shutdown sequence, qemu stops virtual CPUs
      and when started with -no-shutdown waits for us to kill it using
      SGITERM. Since QEMU is flushing its internal buffers, some time may pass
      before QEMU actually dies. We mistakenly used "paused" state (and
      events) for this which is quite confusing since users may see a domain
      going to pause while they expect it to shutdown. Since we already have
      "shutdown" state with "the domain is being shut down" semantics, we
      should use it for this state.
      
      However, the state didn't have a corresponding event so I created one
      and called its detail as VIR_DOMAIN_EVENT_SHUTDOWN_FINISHED (guest OS
      finished its shutdown sequence) with the intent to add
      VIR_DOMAIN_EVENT_SHUTDOWN_STARTED in the future if we have a
      sufficiently capable guest agent that can notify us when guest OS starts
      to shutdown.
      38527c9a
    • J
      Add support for QEMU 1.0 · dd8e8956
      Jiri Denemark 提交于
      dd8e8956
  6. 01 12月, 2011 5 次提交
    • L
      Fix a logic error for setting block I/O · ac6b368d
      Lei Li 提交于
      Fix a logic error, the initial value of ret = -1, if just set --config,
      it will goto endjob directly without doing its really job here.
      Signed-off-by: NLei Li <lilei@linux.vnet.ibm.com>
      ac6b368d
    • A
      qemu: Plug memory leak onqemuProcessWaitForMonitor() error path · 7b811a74
      Alex Jia 提交于
      Detected by Coverity. Leak introduced in commit 109efd79.
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      7b811a74
    • H
      qemu: filter blkio 0-device-weight at two other places · 25a5f07c
      Hu Tao 提交于
      filter 0-device-weight when:
      
        - getting blkio parameters with --config
        - starting up a domain
      
      When testing with blkio, I found these issues:
      
        (dom is down)
        virsh blkiotune dom --device-weights /dev/sda,300,/dev/sdb,500
        virsh blkiotune dom --device-weights /dev/sda,300,/dev/sdb,0
        virsh blkiotune dom
        weight         : 800
        device_weight  : /dev/sda,200,/dev/sdb,0
      
        # issue 1: shows 0 device weight of /dev/sdb that may confuse user
      
        (continued)
        virsh start dom
      
        # issue 2: If /dev/sdb doesn't exist, libvirt refuses to bring the
        # dom up because it wants to set the device weight to 0 of a
        # non-existing device. Since 0 means no weight-limit, we really don't
        # have to set it.
      25a5f07c
    • E
      qemu: amend existing table of device weights · 22cf6d46
      Eric Blake 提交于
      Prior to this patch, for a running dom, the commands:
      
      $ virsh blkiotune dom --device-weights /dev/sda,502,/dev/sdb,498
      $ virsh blkiotune dom --device-weights /dev/sda,503
      $ virsh blkiotune dom
      weight         : 500
      device_weight  : /dev/sda,503
      
      claim that /dev/sdb no longer has a non-default weight, but
      directly querying cgroups says otherwise:
      
      $ cat /cgroup/blkio/libvirt/qemu/dom/blkio.weight_device
      8:0     503
      8:16    498
      
      After this patch, an explicit 0 is required to remove a device path
      from the XML, and omitting a device path that was previously
      specified leaves that device path untouched in the XML, to match
      cgroups behavior.
      
      * src/qemu/qemu_driver.c (parseBlkioWeightDeviceStr): Rename...
      (qemuDomainParseDeviceWeightStr): ...and use correct type.
      (qemuDomainSetBlkioParameters): After parsing string, modify
      rather than replacing existing table.
      * tools/virsh.pod (blkiotune): Tweak wording.
      22cf6d46
    • L
      Implement virDomain{Set, Get}BlockIoTune for the qemu driver · eca96694
      Lei Li 提交于
      Implement the block I/O throttle setting and getting support to qemu
      driver.
      Signed-off-by: NLei Li <lilei@linux.vnet.ibm.com>
      Signed-off-by: NZhi Yong Wu <wuzhy@linux.vnet.ibm.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      eca96694
  7. 30 11月, 2011 7 次提交
    • D
      Remove time APIs from src/util/util.h · a8bb75a3
      Daniel P. Berrange 提交于
      The virTimestamp and virTimeMs functions in src/util/util.h
      duplicate functionality from virtime.h, in a non-async signal
      safe manner. Remove them, and convert all code over to the new
      APIs.
      
      * src/util/util.c, src/util/util.h: Delete virTimeMs and virTimestamp
      * src/lxc/lxc_driver.c, src/qemu/qemu_domain.c,
        src/qemu/qemu_driver.c, src/qemu/qemu_migration.c,
        src/qemu/qemu_process.c, src/util/event_poll.c: Convert to use
        virtime APIs
      a8bb75a3
    • D
      Remove powerMgmt_valid field from capabilities struct · f1f28611
      Daniel P. Berrange 提交于
      If we ensure that virNodeSuspendGetTargetMask always resets
      *bitmask to zero upon failure, there is no need for the
      powerMgmt_valid field.
      
      * src/util/virnodesuspend.c: Ensure *bitmask is zero upon
        failure
      * src/conf/capabilities.c, src/conf/capabilities.h: Remove
        powerMgmt_valid field
      * src/qemu/qemu_capabilities.c: Remove powerMgmt_valid
      f1f28611
    • D
      Move suspend capabilities APIs out of util.h into virnodesuspend.c · c92653f4
      Daniel P. Berrange 提交于
      The node suspend capabilities APIs should not have been put into
      util.[ch]. Instead move them into virnodesuspend.[ch]
      
      * src/util/util.c, src/util/util.h: Remove suspend capabilities APIs
      * src/util/virnodesuspend.c, src/util/virnodesuspend.h: Add
        suspend capabilities APIs
      * src/qemu/qemu_capabilities.c: Include virnodesuspend.h
      c92653f4
    • D
      Rename suspend capabilities APIs · 53c2aad8
      Daniel P. Berrange 提交于
      Rename virGetPMCapabilities to virNodeSuspendGetTargetMask and
      virDiscoverHostPMFeature to virNodeSuspendSupportsTarget.
      
      * src/util/util.c, src/util/util.h: Rename APIs
      * src/qemu/qemu_capabilities.c, src/util/virnodesuspend.c: Adjust
        for new names
      53c2aad8
    • H
      blkiotune: add qemu support for blkiotune.device_weight · 93ab5859
      Hu Tao 提交于
      Implement setting/getting per-device blkio weights in qemu,
      using the cgroups blkio.weight_device tunable.
      93ab5859
    • E
      qemu: fix blkiotune --live --config · 659ded58
      Eric Blake 提交于
      Without this,  'virsh blkiotune --live --config --weight=n'
      only affected live.
      
      * src/qemu/qemu_driver.c (qemuDomainSetBlkioParameters): Allow
      setting both configurations at once.
      659ded58
    • E
      qemu, lxc: drop redundant checks · 51727c1d
      Eric Blake 提交于
      After the previous patch, there are now some redundant checks.
      
      * src/qemu/qemu_driver.c (qemudDomainGetVcpuPinInfo)
      (qemuGetSchedulerParametersFlags): Drop checks now guaranteed by
      libvirt.c.
      * src/lxc/lxc_driver.c (lxcGetSchedulerParametersFlags):
      Likewise.
      51727c1d
  8. 29 11月, 2011 3 次提交
    • O
      block_resize: Implement qemu driver method · d1a6c77a
      Osier Yang 提交于
      It requires the domain is running, otherwise fails. Resize to a lower
      size is supported, but should be used with extreme caution.
      
      In order to prohibit the "size" overflowing after multiplied by
      1024. We do checking in the codes. For QMP mode, the default units
      is Bytes, the passed size needs to be multiplied by 1024, however,
      for HMP mode, the default units is "Megabytes", the passed "size"
      needs to be divided by 1024 then.
      d1a6c77a
    • O
      block_resize: Implement qemu monitor functions · 4fa36f13
      Osier Yang 提交于
      Implements functions for both HMP and QMP mode.
      
      For HMP mode, qemu uses "M" as the units by default, so the passed "sized"
      is divided by 1024.
      
      For QMP mode, qemu uses "Bytes" as the units by default, the passed "sized"
      is multiplied by 1024.
      
      All of the monitor functions return -1 on failure, 0 on success, or -2 if
      not supported.
      4fa36f13
    • S
      Implement the core API to suspend/resume the host · 4ddb37c3
      Srivatsa S. Bhat 提交于
      Add the core functions that implement the functionality of the API.
      Suspend is done by using an asynchronous mechanism so that we can return
      the status to the caller before the host gets suspended. This asynchronous
      operation is achieved by suspending the host in a separate thread of
      execution. However, returning the status to the caller is only best-effort,
      but not guaranteed.
      
      To resume the host, an RTC alarm is set up (based on how long we want to
      suspend) before suspending the host. When this alarm fires, the host
      gets woken up.
      
      Suspend-to-RAM operation on a host running Linux can take upto more than 20
      seconds, depending on the load of the system. (Freezing of tasks, an operation
      preceding any suspend operation, is given up after a 20 second timeout).
      And Suspend-to-Disk can take even more time, considering the time required
      for compaction, creating the memory image and writing it to disk etc.
      So, we do not allow the user to specify a suspend duration of less than 60
      seconds, to be on the safer side, since we don't want to prematurely declare
      failure when we only had to wait for some more time.
      4ddb37c3
  9. 24 11月, 2011 4 次提交
  10. 23 11月, 2011 3 次提交
    • P
      qemu: Avoid dereference of NULL pointer · c4b32641
      Peter Krempa 提交于
      If something fails while initializing qemu job object in
      qemuDomainObjPrivateAlloc(), memory to the private pointer is freed, but
      after that, the pointer is still dereferenced, which may result in a
      segfault.
      
      * qemuDomainObjPrivateAlloc() - Don't dereference NULL pointer.
      c4b32641
    • E
      qemu: fix a const-correctness issue · db2f6807
      Eric Blake 提交于
      Generally, functions which return malloc'd strings should be typed
      as 'char *', not 'const char *', to make it obvious that the caller
      is responsible to free things.  free(const char *) fails to compile,
      and although we have a cast embedded in VIR_FREE to work around poor
      code that frees const char *, it's better to not rely on that hack.
      
      * src/qemu/qemu_driver.c (qemuDiskPathToAlias): Change return type.
      (qemuDomainBlockJobImpl): Update caller.
      db2f6807
    • E
      blockstats: support lookup by path in blockstats · c725e2dc
      Eric Blake 提交于
      Commit 89b6284f made it possible to pass either a source name or
      the target device to most API demanding a disk designation, but
      forgot to update the documentation.  It also failed to update
      virDomainBlockStats to take both forms. This patch fixes both the
      documentation and the remaining function.
      
      Xen continues to use just device shorthand (that is, I did not
      implement path lookup there, since xen does not track a domain_conf
      to quickly tie a path back to the device shorthand).
      
      * src/libvirt.c (virDomainBlockStats, virDomainBlockStatsFlags)
      (virDomainGetBlockInfo, virDomainBlockPeek)
      (virDomainBlockJobAbort, virDomainGetBlockJobInfo)
      (virDomainBlockJobSetSpeed, virDomainBlockPull): Document
      acceptable disk naming conventions.
      * src/qemu/qemu_driver.c (qemuDomainBlockStats)
      (qemuDomainBlockStatsFlags): Allow lookup by source name.
      * src/test/test_driver.c (testDomainBlockStats): Likewise.
      c725e2dc
  11. 22 11月, 2011 2 次提交
    • S
      Export KVM Host Power Management capabilities · e352b164
      Srivatsa S. Bhat 提交于
      This patch exports KVM Host Power Management capabilities as XML so that
      higher-level systems management software can make use of these features
      available in the host.
      
      The script "pm-is-supported" (from pm-utils package) is run to discover if
      Suspend-to-RAM (S3) or Suspend-to-Disk (S4) is supported by the host.
      If either of them are supported, then a new tag "<power_management>" is
      introduced in the XML under the <host> tag.
      
      However in case the query to check for power management features succeeded,
      but the host does not support any such feature, then the XML will contain
      an empty <power_management/> tag. In the event that the PM query itself
      failed, the XML will not contain any "power_management" tag.
      
      To use this, new APIs could be implemented in libvirt to exploit power
      management features such as S3/S4.
      e352b164
    • R
      qemu: don't release network actual device twice · 334c539b
      Roopa Prabhu 提交于
      For direct attach devices, in qemuBuildCommandLine, we seem to be freeing
      actual device on error path (with networkReleaseActualDevice). But the actual
      device is not deleted.
      
      qemuProcessStop eventually deletes the direct attach device and releases
      actual device. But by the time qemuProcessStop is called qemuBuildCommandLine
      has already freed actual device, leaving stray macvtap devices behind on error.
      So the simplest fix is to remove the networkReleaseActualDevice in
      qemuBuildCommandLine. This patch does just that.
      Signed-off-by: NRoopa Prabhu <roprabhu@cisco.com>
      334c539b
  12. 21 11月, 2011 1 次提交
    • M
      qemu: Copy console definition from serial · 2e37bf42
      Michal Privoznik 提交于
      Now, when we support multiple consoles per domain,
      the vm->def->console[0] can still remain an alias
      for vm->def->serial[0]; However, we need to copy
      it's source definition as well otherwise we'll regress
      on virDomainOpenConsole.
      2e37bf42
  13. 19 11月, 2011 4 次提交
    • H
      enable cgroup cpuset by default · 41a2636a
      Hu Tao 提交于
      This prepares for subsequent patches which introduce dependence
      on cgroup cpuset. Enable cgroup cpuset by default so users don't
      have to modify configuration file before encountering a cpuset
      error.
      41a2636a
    • D
      Allow creation of plain macvlan devices · 6ec8288a
      Daniel P. Berrange 提交于
      Update virNetDevMacVLanCreateWithVPortProfile to allow creation
      of plain macvlan devices, as well as macvtap devices. The former
      is useful for LXC containers
      
      * src/qemu/qemu_command.c: Explicitly request a macvtap device
      * src/util/virnetdevmacvlan.c, src/util/virnetdevmacvlan.h: Add
        new flag to allow switching between macvlan and macvtap
        creation
      6ec8288a
    • D
      Rename high level macvlan creation APIs · 191090ae
      Daniel P. Berrange 提交于
      Rename virNetDevMacVLanCreate to virNetDevMacVLanCreateWithVPortProfile
      and virNetDevMacVLanDelete to virNetDevMacVLanDeleteWithVPortProfile
      
      To make way for renaming the other macvlan creation APIs in
      interface.c
      
      * util/virnetdevmacvlan.c, util/virnetdevmacvlan.h,
        qemu/qemu_command.c, qemu/qemu_hotplug.c, qemu/qemu_process.c:
        Rename APIs
      191090ae
    • D
      Rename and split the macvtap.c file · 896104c9
      Daniel P. Berrange 提交于
      Rename the macvtap.c file to virnetdevmacvlan.c to reflect its
      functionality. Move the port profile association code out into
      virnetdevvportprofile.c. Make the APIs available unconditionally
      to callers
      
      * src/util/macvtap.h: rename to src/util/virnetdevmacvlan.h,
      * src/util/macvtap.c: rename to src/util/virnetdevmacvlan.c
      * src/util/virnetdevvportprofile.c, src/util/virnetdevvportprofile.h:
        Pull in vport association code
      * src/Makefile.am, src/conf/domain_conf.h, src/qemu/qemu_conf.c,
        src/qemu/qemu_conf.h, src/qemu/qemu_driver.c: Update include
        paths & remove conditional compilation
      896104c9