1. 13 3月, 2014 1 次提交
  2. 11 3月, 2014 1 次提交
    • D
      Remove broken error reporting in QEMU mac filtering · cfb92c9b
      Daniel P. Berrange 提交于
      The qemu_bridge_filter.c file had some helpers for calling
      the ebtablesXXX functions todo bridge filtering. The only
      thing these helpers did was to overwrite the original error
      message from the ebtables code. For added fun, the callers
      of these helpers overwrote the errors yet again. For even
      more fun, one of the helpers called another helper and
      overwrite its errors too.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      cfb92c9b
  3. 10 3月, 2014 1 次提交
  4. 06 3月, 2014 1 次提交
    • M
      qemu: Reject unsupported tuning in session mode · 45ad1adb
      Martin Kletzander 提交于
      When domain is started with setting that cannot be done, i.e. those
      that require cgroups, there is no error reported and it succeeds
      without any message whatsoever.
      
      When setting with API, virsh, an error is reported, but only due to
      the fact that no cgroups are mounted (priv->cgroup == NULL).
      
      Given the above it seems reasonable to reject such unsupported
      settings.
      
      This patch effectively changes the error message from:
      
      $ virsh -c qemu:///session schedinfo dummy
      Scheduler      : Unknown
      error: Requested operation is not valid: cgroup CPU controller is not mounted
      
      to:
      
      $ virsh -c qemu:///session schedinfo dummy
      Scheduler      : Unknown
      error: Operation not supported: CPU tuning is not available in session mode
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1023366Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      45ad1adb
  5. 04 3月, 2014 2 次提交
    • M
      qemuBuildNicDevStr: Adapt to new advisory on multiqueue · 042c4ab1
      Michal Privoznik 提交于
      As I did previously in 4f588a1b, libvirt needs to set virtio vectors.
      Previously, we were advised to use vectors=N, where
      
      N = 2 * (number of queues) + 1
      
      However, just recently this advisory has changed on the Multiquue wiki
      page [1] to:
      
      N = 2 * (number of queues) + 2
      
      1: http://www.linux-kvm.org/page/Multiqueue#Enable_MQ_featureSigned-off-by: NMichal Privoznik <mprivozn@redhat.com>
      042c4ab1
    • E
      util: make it easier to grab only regular command exit · b9dd878f
      Eric Blake 提交于
      Auditing all callers of virCommandRun and virCommandWait that
      passed a non-NULL pointer for exit status turned up some
      interesting observations.  Many callers were merely passing
      a pointer to avoid the overall command dying, but without
      caring what the exit status was - but these callers would
      be better off treating a child death by signal as an abnormal
      exit.  Other callers were actually acting on the status, but
      not all of them remembered to filter by WIFEXITED and convert
      with WEXITSTATUS; depending on the platform, this can result
      in a status being reported as 256 times too big.  And among
      those that correctly parse the output, it gets rather verbose.
      Finally, there were the callers that explicitly checked that
      the status was 0, and gave their own message, but with fewer
      details than what virCommand gives for free.
      
      So the best idea is to move the complexity out of callers and
      into virCommand - by default, we return the actual exit status
      already cleaned through WEXITSTATUS and treat signals as a
      failed command; but the few callers that care can ask for raw
      status and act on it themselves.
      
      * src/util/vircommand.h (virCommandRawStatus): New prototype.
      * src/libvirt_private.syms (util/command.h): Export it.
      * docs/internals/command.html.in: Document it.
      * src/util/vircommand.c (virCommandRawStatus): New function.
      (virCommandWait): Adjust semantics.
      * tests/commandtest.c (test1): Test it.
      * daemon/remote.c (remoteDispatchAuthPolkit): Adjust callers.
      * src/access/viraccessdriverpolkit.c (virAccessDriverPolkitCheck):
      Likewise.
      * src/fdstream.c (virFDStreamCloseInt): Likewise.
      * src/lxc/lxc_process.c (virLXCProcessStart): Likewise.
      * src/qemu/qemu_command.c (qemuCreateInBridgePortWithHelper):
      Likewise.
      * src/xen/xen_driver.c (xenUnifiedXendProbe): Simplify.
      * tests/reconnect.c (mymain): Likewise.
      * tests/statstest.c (mymain): Likewise.
      * src/bhyve/bhyve_process.c (virBhyveProcessStart)
      (virBhyveProcessStop): Don't overwrite virCommand error.
      * src/libvirt.c (virConnectAuthGainPolkit): Likewise.
      * src/openvz/openvz_driver.c (openvzDomainGetBarrierLimit)
      (openvzDomainSetBarrierLimit): Likewise.
      * src/util/virebtables.c (virEbTablesOnceInit): Likewise.
      * src/util/viriptables.c (virIpTablesOnceInit): Likewise.
      * src/util/virnetdevveth.c (virNetDevVethCreate): Fix debug
      message.
      * src/qemu/qemu_capabilities.c (virQEMUCapsInitQMP): Add comment.
      * src/storage/storage_backend_iscsi.c
      (virStorageBackendISCSINodeUpdate): Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      b9dd878f
  6. 19 2月, 2014 1 次提交
  7. 18 2月, 2014 1 次提交
    • M
      network: Introduce network hooks · f1ab06e4
      Michal Privoznik 提交于
      There might be some use cases, where user wants to prepare the host or
      its environment prior to starting a network and do some cleanup after
      the network has been shut down. Consider all the functionality that
      libvirt doesn't currently have as an example what a hook script can
      possibly do.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      f1ab06e4
  8. 14 2月, 2014 2 次提交
  9. 11 2月, 2014 3 次提交
    • M
      qemu: introduce spiceport chardev backend · d27e6bc4
      Martin Kletzander 提交于
      Add a new backend for any character device.  This backend uses channel
      in spice connection.  This channel is similar to spicevmc, but
      all-purpose in contrast to spicevmc.
      
      Apart from spicevmc, spiceport-backed chardev will not be formatted
      into the command-line if there is no spice to use (with test for that
      as well).  For this I moved the def->graphics counting to the start
      of the function so its results can be used in rest of the code even in
      the future.
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      d27e6bc4
    • M
      qemu: remove pointless condition · 296a4791
      Martin Kletzander 提交于
      This patch is here just to ease the code review and make related
      changes look more sensible.  Apart from removing the condition this is
      merely a whitespace (indentation) change.
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      296a4791
    • M
      qemu: rework '-serial none' · a53e5040
      Martin Kletzander 提交于
      Limiting ourselves to qemu without QEMU_CAPS_DEVICE capability, we
      used '-serial none' only if there was no serial device defined in the
      domain XML.  This means that if we want to have a possibility of the
      device being defined in XML, but not used in the command-line
      (e.g. when it's pointless), we'll fail to attach '-serial none' to the
      command-line (when skipping the device's command-line building and the
      device being the only one).
      
      Since there is no such device, this patch doesn't actually do
      anything, but enables easier future additions in this manner.
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      a53e5040
  10. 10 2月, 2014 2 次提交
    • P
      qemu: hyperv: Add support for timer enlightenments · 600bca59
      Peter Krempa 提交于
      Add a new <timer> for the HyperV reference time counter enlightenment
      and the iTSC reference page for Windows guests.
      
      This feature provides a paravirtual approach to track timer events for
      the guest (similar to kvmclock) with the option to use real hardware
      clock on systems with a iTSC with compensation across various hosts.
      600bca59
    • P
      conf: Enforce supported options for certain timers · 8ffaa42d
      Peter Krempa 提交于
      According to the documentation various timer options are only supported
      by certain timer types. Add a post parse check to verify that the user
      didn't specify invalid options.
      
      Also fix the qemu command line parsing function to set correct default
      values for the kvmclock timer so that it passes the new check.
      8ffaa42d
  11. 06 2月, 2014 1 次提交
  12. 03 2月, 2014 1 次提交
  13. 30 1月, 2014 1 次提交
    • O
      util: Add one argument for several scsi utils · 10c9ceff
      Osier Yang 提交于
      To support passing the path of the test data to the utils, one
      more argument is added to virSCSIDeviceGetSgName,
      virSCSIDeviceGetDevName, and virSCSIDeviceNew, and the related
      code is changed accordingly.
      
      Later tests for the scsi utils will be based on this patch.
      Signed-off-by: NOsier Yang <jyang@redhat.com>
      10c9ceff
  14. 21 1月, 2014 1 次提交
    • F
      spice: expose the QEMU disable file transfer option · 08d07e5f
      Francesco Romani 提交于
      spice-server offers an API to disable file transfer messages
      on the agent channel between the client and the guest.
      This is supported in qemu through the disable-agent-file-xfer option.
      
      This patch exposes this option to libvirt.
      Adds a new element 'filetransfer', with one property,
      'enable', which accepts a boolean.
      Default is enabled, for backward compatibility.
      
      Depends on the capability exported in the first patch of the series.
      Signed-off-by: NFrancesco Romani <fromani@redhat.com>
      08d07e5f
  15. 09 1月, 2014 1 次提交
  16. 07 1月, 2014 1 次提交
  17. 06 1月, 2014 1 次提交
    • J
      Fix explicit usage of default video PCI slots · ec128e69
      Ján Tomko 提交于
      Do not leave the PCI address of the primary video card set
      to the legacy default (0000:00:02.0) if we're doing two-pass
      allocation.
      
      Since QEMU 1.6 (QEMU_CAPS_VIDEO_PRIMARY) we allow the primary
      video card to be on other slots than 0000:00:02.0 (as we use
      -device instead of -vga).
      
      However we fail to assign it an address if:
      * another device explicitly uses 0000:00:02.0 and
      * the primary video device has no address specified
      
      On the first pass, we have set the address to default, then checked
      if it's available, leaving it set even if it wasn't. This address
      got picked up by the second pass, resulting in a conflict:
      
      XML error: Attempted double use of PCI slot 0000:00:02.0
      (may need "multifunction='on'" for device on function 0)
      
      Also fix the test that was supposed to catch this.
      ec128e69
  18. 18 12月, 2013 1 次提交
    • E
      qemu: ask for -enable-fips when FIPS is required · a21cfb0f
      Eric Blake 提交于
      On a system that is enforcing FIPS, most libraries honor the
      current mode by default.  Qemu, on the other hand, refused to
      honor FIPS mode unless you add the '-enable-fips' command
      line option; worse, this option is not discoverable via QMP,
      and is only present on binaries built for Linux.  So, if we
      detect FIPS mode, then we unconditionally ask for FIPS; either
      qemu is new enough to have the option and then correctly
      cripple insecure VNC passwords, or it is so old that we are
      correctly avoiding a FIPS violation by preventing qemu from
      starting.  Meanwhile, if we don't detect FIPS mode, then
      omitting the argument is safe whether the qemu has the option
      (but it would do nothing because FIPS is disabled) or whether
      qemu lacks the option (including in the case where we are not
      running on Linux).
      
      The testsuite was a bit interesting: we don't want our test
      to depend on whether it is being run in FIPS mode, so I had
      to tweak things to set the capability bit outside of our
      normal interaction with capability parsing.
      
      This fixes https://bugzilla.redhat.com/show_bug.cgi?id=1035474
      
      * src/qemu/qemu_capabilities.h (QEMU_CAPS_ENABLE_FIPS): New bit.
      * src/qemu/qemu_capabilities.c (virQEMUCapsInitQMP): Conditionally
      set capability according to detection of FIPS mode.
      * src/qemu/qemu_command.c (qemuBuildCommandLine): Use it.
      * tests/qemucapabilitiestest.c (testQemuCaps): Conditionally set
      capability to test expected output.
      * tests/qemucapabilitiesdata/caps_1.2.2-1.caps: Update list.
      * tests/qemucapabilitiesdata/caps_1.6.0-1.caps: Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      a21cfb0f
  19. 13 12月, 2013 1 次提交
  20. 05 12月, 2013 1 次提交
    • N
      Fix memory leak in qemuBuildDriveStr() · f386d323
      Nehal J Wani 提交于
      This patch fixes memory leaks reported by valgrind on running
      qemuxml2argvtest; introduced in commit 0df53f04.
      
      Most of them are of the form:
      
      ==24777== 15 bytes in 1 blocks are definitely lost in loss record 39 of 129
      ==24777==    at 0x4A0887C: malloc (vg_replace_malloc.c:270)
      ==24777==    by 0x341F485E21: strdup (strdup.c:42)
      ==24777==    by 0x4CADE5F: virStrdup (virstring.c:554)
      ==24777==    by 0x4362B6: qemuBuildDriveStr (qemu_command.c:3848)
      ==24777==    by 0x43EF73: qemuBuildCommandLine (qemu_command.c:8500)
      ==24777==    by 0x426670: testCompareXMLToArgvHelper (qemuxml2argvtest.c:350)
      ==24777==    by 0x427C01: virtTestRun (testutils.c:138)
      ==24777==    by 0x41DDB5: mymain (qemuxml2argvtest.c:658)
      ==24777==    by 0x4282A2: virtTestMain (testutils.c:593)
      ==24777==    by 0x341F421A04: (below main) (libc-start.c:225)
      ==24777==
      Signed-off-by: NEric Blake <eblake@redhat.com>
      f386d323
  21. 03 12月, 2013 9 次提交
    • L
      qemu: add "-boot strict" to commandline whenever possible · 96fddee3
      Laine Stump 提交于
      This resolves:
      
        https://bugzilla.redhat.com/show_bug.cgi?id=888635
      
      (which was already closed as CANTFIX because the qemu "-boot strict"
      commandline option wasn't available at the time).
      
      Problem: you couldn't have a domain that used PXE to boot, but also
      had an un-bootable disk device *even if that disk wasn't listed in the
      boot order*, because if PXE timed out (e.g. due to the bridge
      forwarding delay), the BIOS would move on to the next target, which
      would be the unbootable disk device (again - even though it wasn't
      given a boot order), and get stuck at a "BOOT DISK FAILURE, PRESS ANY
      KEY" message until a user intervened.
      
      The solution available since sometime around QEMU 1.5, is to add
      "-boot strict=on" to *every* qemu command. When this is done, if any
      devices have a boot order specified, then QEMU will *only* attempt to
      boot from those devices that have an explicit boot order, ignoring the
      rest.
      96fddee3
    • P
      qemu: Refactor disk source string formatting · 0df53f04
      Peter Krempa 提交于
      This patch adds function qemuGetDriveSourceString to produce
      qemu-compatible disk source strings that will enable to reuse the code
      and refactors building of the qemu commandline of disks to use this new
      helper.
      0df53f04
    • P
      qemu: Unify formatting of RBD sources · b384e2b4
      Peter Krempa 提交于
      b384e2b4
    • P
      qemu: Split out NBD command generation · d94fd0c9
      Peter Krempa 提交于
      d94fd0c9
    • P
      eaa1539b
    • P
      qemu: Use qemuBuildNetworkDriveURI to handle http/ftp and friends · 078a1025
      Peter Krempa 提交于
      Prepare the function to integrate other protocols and start folding
      other network protocols into a common place.
      078a1025
    • P
      qemu: Simplify call pattern of qemuBuildDriveURIString · 927ddae1
      Peter Krempa 提交于
      Automatically assign secret type from the disk source definition and
      pull in adding of the comma. Then update callers to keep generated
      output the same.
      927ddae1
    • P
      qemu: Split out formatting of network disk source URI · a29d33ff
      Peter Krempa 提交于
      The snapshot code will need to use qemu-style formatted URIs of network
      disks. Split out the code to avoid duplication.
      a29d33ff
    • P
      qemu: Refactor qemuTranslateDiskSourcePool · e1a4d08b
      Peter Krempa 提交于
      Before this patch, the translation function still needs a second ugly
      helper function to actually format the command line for qemu. But if we
      do the right stuff in the translation function, we don't have to bother
      with the second function any more.
      
      This patch removes the messy qemuBuildVolumeString function and changes
      qemuTranslateDiskSourcePool to set stuff up correctly so that the
      regular code paths meant for volumes can be used to format the command
      line correctly.
      
      For this purpose a new helper "qemuDiskGetActualType()" is introduced to
      return the type of the volume in a pool.
      
      As a part of the refactor the qemuTranslateDiskSourcePool function is
      fixed to do decisions based on the pool type instead of the volume type.
      This allows to separate pool-type-specific stuff more clearly and will
      ease addition of other pool types that will require certain other
      operations to get the correct pool source.
      
      The previously fixed tests should make sure that we don't break stuff
      that was working before.
      e1a4d08b
  22. 26 11月, 2013 1 次提交
    • E
      storage: add network-dir as new storage volume type · ecd881b7
      Eric Blake 提交于
      In the 'directory' and 'netfs' storage pools, a user can see
      both 'file' and 'dir' storage volume types, to know when they
      can descend into a subdirectory.  But in a network-based storage
      pool, such as the upcoming 'gluster' pool, we use 'network'
      instead of 'file', and did not have any counterpart for a
      directory until this patch.  Adding a new volume type
      'network-dir' is better than reusing 'dir', because it makes
      it clear that the only way to access 'network' volumes within
      that container is through the network mounting (leaving 'dir'
      for something accessible in the local file system).
      
      * include/libvirt/libvirt.h.in (virStorageVolType): Expand enum.
      * docs/formatstorage.html.in: Document it.
      * docs/schemasa/storagevol.rng (vol): Allow new value.
      * src/conf/storage_conf.c (virStorageVol): Use new value.
      * src/qemu/qemu_command.c (qemuBuildVolumeString): Fix client.
      * src/qemu/qemu_conf.c (qemuTranslateDiskSourcePool): Likewise.
      * tools/virsh-volume.c (vshVolumeTypeToString): Likewise.
      * src/storage/storage_backend_fs.c
      (virStorageBackendFileSystemVolDelete): Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      ecd881b7
  23. 25 11月, 2013 1 次提交
  24. 21 11月, 2013 2 次提交
  25. 19 11月, 2013 1 次提交
  26. 12 11月, 2013 1 次提交