1. 17 8月, 2009 1 次提交
    • C
      Compressed save image format for Qemu. · 2d6a5819
      Chris Lalancette 提交于
      Implement a compressed save image format for qemu.  While ideally
      we would have the choice between compressed/non-compressed
      available to the libvirt API, unfortunately there is no "flags"
      parameter to the virDomainSave() API.  Therefore, implement this
      as a qemu.conf option.  gzip, bzip2, and lzma are implemented, and
      it should be very easy to implement additional compression
      methods.
      
      One open question is if/how we should detect the compression
      binaries.  One way to do it is to do compile-time setting of the
      paths (via configure.in), but that doesn't seem like a great thing
      to do.  My preferred solution is not to detect at all;
      when we go to run the commands that need them, if they
      aren't available, or aren't available in one of the standard paths,
      then we'll fail.  That's also the solution implemented in this patch.
      
      In the future, we'll have a more robust (managed) save/restore API,
      at which time we can expose this functionality properly in the API.
      
      V2: get rid of redundant dd command and just use >> to append data.
      V3: Add back the missing pieces for the enum and bumping the save version.
      V4: Make the compressed field in the save_header an int.
          Implement LZMA compression.
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      2d6a5819
  2. 14 8月, 2009 1 次提交
    • M
      Detect KVM's PCI device assignment support · d4528d9a
      Mark McLoughlin 提交于
      PCI device assignment is only supported in KVM's fork of qemu, so we
      should really detect its availability and give a nice error if its
      not supported.
      
      * src/qemu_conf.[ch]: introduce QEMUD_CMD_FLAG_PCIDEVICE indicating
        that the -pcidevice command line option is available
      
      * tests/*: update the tests
      d4528d9a
  3. 05 8月, 2009 1 次提交
    • A
      Typo and comment fixes · 3879b334
      Aron Griffis 提交于
      * docs/schemas/*.rng: the comments were wrong
      * src/qemu_conf.c: typo in an error message
      3879b334
  4. 27 7月, 2009 8 次提交
    • M
      Make qemuBuildHostNetStr() take tapfd as a string · 32db8dd7
      Mark McLoughlin 提交于
      With hotplug, we're going to want to pass a tapfd name rather than an
      actual file descriptor, so prepare the way by passing a string tapfd to
      qemuBuildHostNetStr().
      
      * src/qemu_conf.h: qemuBuildHostNetStr() takes a string tapfd now
      
      * src/qemu_conf.c: pass qemuBuildHostNetStr() a string rather than an
        actual file descriptor
      
      * src/qemu_driver.c: update qemudDomainAttachNetDevice() for change
      32db8dd7
    • M
      Move vnet_hdr logic into qemudNetworkIfaceConnect() and export it · a3f33b65
      Mark McLoughlin 提交于
      * src/qemu_conf.h: export qemudNetworkIfaceConnect()
      
      * src/qemu_conf.c: move vnet_hdr logic into qemudNetworkIfaceConnect()
        since we need it for hotplug too
      a3f33b65
    • M
      Only probe qemu for machine types when binary changes · 707302b2
      Mark McLoughlin 提交于
      By probing for qemu machine types, we increased the time of a
      GetCapabilities call from 100us to a whopping 60ms.
      
      This patch takes the approach of only probing for machine types
      when the mtime of the emulator binary changed since the last time
      the capabilities were generated.
      
      * src/capabilities.h: cache the emulator binary mtime
      
      * src/qemu_conf.c: add qemudGetOldMachines() to copy the machine
        types from the old caps struct if the mtime for the binary hasn't
        changed
      
      * src/qemu_conf.h, src/qemu_driver.c: pass the old caps pointer to
        qemudCapsInit()
      707302b2
    • M
      Probe QEMU directly for machine aliases if not found in capabilties · c14c6b08
      Mark McLoughlin 提交于
      Not all possible emulators are actually in the capabilities, so if we
      don't find the supplied emulator we should probe it directly for machine
      types.
      
      * src/qemu_driver.c: add qemudCanonicalizeMachineDirect() to directly
        probe an emulator for the canonical machine type
      c14c6b08
    • M
      Canonicalize qemu machine types · be291b33
      Mark McLoughlin 提交于
      In qemu-0.11 there is a 'pc-0.10' machine type which allows you to run
      guests with a machine which is compatible with the pc machine in
      qemu-0.10 - e.g. using the original PCI class for virtio-blk and
      virtio-console and disabling MSI support in virtio-net. The idea here
      is that we don't want to suprise guests by changing the hardware when
      qemu is updated.
      
      I've just posted some patches for qemu-0.11 which allows libvirt to
      canonicalize the 'pc' machine alias to the latest machine version.
      
      This patches makes us use that so that when a guest is configured to
      use the 'pc' machine type, we resolve that to 'pc-0.11' machine and
      save that in the guest XML.
      
      See also:
      
        https://fedoraproject.org/wiki/Features/KVM_Stable_Guest_ABI
      
      * src/qemu_conf.c: add qemudCanonicalizeMachine() to canonicalize
        the machine type according to the machine aliases in capabilities
      
      * src/qemu_driver.c: parse aliases in qemudParseMachineTypesStr()
      be291b33
    • M
      Add virCapsGuestMachine structure · 38fd207e
      Mark McLoughlin 提交于
      A subsequent commit will add a "canonical" field to this structure,
      this patch basically just prepares the way for that.
      
      The new type is added, along with virCapabilitiesAlloc/FreeMachines()
      helpers and a whole bunch of code to make the transition.
      
      One quirk is that virCapabilitiesAddGuestDomain() and
      virCapabilitiesAddGuest() take ownership of the machine list rather
      than duping it. This makes sense to avoid needless copying.
      
      * src/capabilities.h: add the virCapsGuestMachine struct and use it
        in virCapsGuestDomainInfo, add prototypes for new functions and
        update the AddGuest() prototypes
      
      * src/capabilities.c: add code for allocating and freeing the new
        type, change the machines parameter to AddGuest() etc.
      
      * src/libvirt_private.syms: export the new helpers
      
      * src/qemu_conf.c: update all the machine type code to use the new
        struct
      
      * src/xen_internal.c: ditto
      
      * tests/testutilsqemu.c: ditto
      38fd207e
    • M
      Probe for QEMU machine types · d412487e
      Mark McLoughlin 提交于
      Currently we hardcode the QEMU machine types. We should really just
      parse the output of 'qemu -M ?' so the lists don't get out of sync.
      
      xenner doesn't support '-M ?', so we still need to hardcode that.
      
      The horrible (const char *const *) is removed in a subsequent patch.
      
      * src/qemu_conf.c: kill the arch_info*machines tables, retain the
        hardcoded xenner machine type, add qemudProbeMachineTypes() to
        run and parse 'qemu -M ?' and use it in qemudCapsInitGuest()
      d412487e
    • M
      Cleanup qemu binary detection logic in qemudCapsInitGuest() · 7803e6f3
      Mark McLoughlin 提交于
      There's no need for the hasbase/hasaltbase confusion, just store the
      first binary path found in a variable.
      
      * src/qemu_conf.c: kill hasbase/hasaltbase logic in qemudCapsInitGuest()
      7803e6f3
  5. 24 7月, 2009 1 次提交
    • D
      Make QEMU cgroups use configurable · f4c3acdf
      Daniel P. Berrange 提交于
       * qemud/libvirtd_qemu.aug, qemud/test_libvirtd_qemu.aug,
         src/qemu.conf: Add 'cgroups_controllers' and 'cgroups_device_acl'
         parameters
       * src/qemu_conf.h, src/qemu_conf.c: Load & parse configuration params
         for cgroups
       * src/qemu_driver.c: Only use cgroups controllers that are activated,
         and use configured device whitelist instead of default, if set.
      f4c3acdf
  6. 23 7月, 2009 1 次提交
    • J
      Always add -no-kvm and -no-kqemu, for qemu domains · 7922e247
      Jim Paris 提交于
      If the qemu binary supports "-no-kvm" and/or "-no-kqemu", they should
      always be added for plain "qemu" domains.  Previously, we omitted them
      whenever the host and guest architectures implied that they would be
      disabled automatically, but that logic was flawed in some cases
      (such as i686 and x86_64).
      * src/qemu_conf.c: fix the conditions for adding "-no-kvm" and/or "-no-kqemu"
      7922e247
  7. 22 7月, 2009 6 次提交
    • M
      Basic qemu NIC hotplug support · 35153940
      Mark McLoughlin 提交于
      Implement basic NIC hotplug support using the 'host_net_add' and
      'pci_add' qemu monitor commands.
      
      For now, we don't support 'bridge' or 'network' types.
      
      Also, if pci_add fails, we currently fail to remove the backend
      which we added.
      
      Finally, NIC hot-unplug support is missing.
      
      * src/qemu_driver.c: add qemudDomainAttachNetDevice()
      
      * src/qemu_conf.[ch]: export qemuBuildNicStr(), qemuBuildHostNetStr()
        and qemuAssignNames()
      
      * src/libvirt_private.syms: export virDomainNetTypeToString()
      35153940
    • M
      Store the interface vlan number in the domain state · 30605477
      Mark McLoughlin 提交于
      Currently, an interface's vlan number corresponds to its index in
      the table of network interfaces. That is no longer true when we
      allow devices to be removed.
      
      To fix this, we store the vlan number in the domain's state XML
      so that it survives libvirtd restarts.
      
      * src/domain_conf.h: add vlan number to virDomainNetDef
      
      * src/domain_conf.c: store it in XML as <state vlan='N'/>, defaulting
        to -1 if this is state saved by a previous version of libvirt
      
      * src/qemu_conf.c: assign vlan numbers before starting qemu
      30605477
    • M
      Assign names to qemu NICs and network backends · c23dae4e
      Mark McLoughlin 提交于
      We need these so that we can remove the devices via the monitor.
      
      * src/domain_conf.h: add nic_name and hostnet_name to virDomainNetDef
      
      * src/domain_conf.c: free nic_name and hostnet_name
      
      * src/qemu_conf.c: add qemuAssignNetNames(), use it if qemu has
        support for the param and pass the names on the command line
      
      * tests/qemuxml2argv*: add a test for this
      c23dae4e
    • M
      Add checks for some NIC hotplug related features added in qemu-0.10.0 · 94889768
      Mark McLoughlin 提交于
      Add QEMUD_CMD_FLAG_NET_NAME to indicate that '-net ...,name=foo' is
      supported and QEMUD_CMD_FLAG_HOST_NET_ADD to indicate that the
      'host_net_add' monitor command is available.
      
      Set both these flags if the qemu version is greater than 0.10.0.
      Checking via the '-help' output would not work for the monitor command
      and even for the command line arg, it would be quite fragile.
      
      * src/qemu_conf.h: add new flags as aliases of QEMUD_CMD_FLAG_0_10
      
      * src/qemu_conf.c: set QEMUD_CMD_FLAG_0_10 for versions >= 0.10.0
      
      * tests/qemuhelptest.c: set QEMUD_CMD_FLAG_0_10 for the appropriate
        qemu versions
      94889768
    • M
      Factor qemuBuildHostNetStr() out from qemuBuildCommandLine() · 63e67ee0
      Mark McLoughlin 提交于
      Re-factor this code so that it can be used for NIC hotplug
      too. The awkward prefix and type_sep arguments are needed to
      allow us to do "host_net_add tap vlan=..."
      
      * src/qemu_conf.c: factor the net backend string formatting
        code into its own function
      63e67ee0
    • M
      Factor qemuBuildNicStr() out from qemuBuildCommandLine() · ce2e300a
      Mark McLoughlin 提交于
      Re-factor this code so that it can be used for NIC hotplug
      too. The awkward arguments are needed to allow use to do
      "pci_add auto nic macaddr=..."
      
      * src/qemu_conf.c: factor the nic string formatting code into
        its own function
      ce2e300a
  8. 17 7月, 2009 1 次提交
    • D
      Run QEMU guests as an unprivileged user · 0714b2ba
      Daniel P. Berrange 提交于
      * configure.in: Add --with-qemu-user and --with-qemu-group args
      * libvirt.spec.in: use 'qemu' for user/group for Fedora >= 12
      * qemud/libvirtd_qemu.arg, qemud/test_libvirtd_qemu.aug,
        src/qemu.conf: Add 'user' and 'group' args for configuration
      * src/Makefile.am: Create %localstatedir/cache/libvirt/qemu
      * src/qemu_conf.c, src/qemu_conf.h: Load user/group from config
      * src/qemu_driver.c: Change user ID/group ID when launching QEMU
        guests. Change user/group ownership on disks/usb/pci devs.
        Put memory dumps in %localstatedir/cache/libvirt/qemu
      * src/util.c, src/util.h: Add convenient APIs for converting
        username/groupname to user ID / group ID
      0714b2ba
  9. 16 7月, 2009 1 次提交
    • J
      remove all trailing blank lines · 07613d20
      Jim Meyering 提交于
      by running this command:
      git ls-files -z | xargs -0 perl -pi -0777 -e 's/\n\n+$/\n/'
      This is in preparation for a more strict make syntax-check
      rule that will detect trailing blank lines.
      07613d20
  10. 10 7月, 2009 1 次提交
    • M
      Add the monitor type to the domain state XML · 05d377bd
      Mark McLoughlin 提交于
      There are no functional changes in this patch apart from adding the
      monitor type to the state XML.
      
      The patch mostly consists of switching to use virDomainChrDef every
      where to describe the monitor.
      
      * src/domain_conf.h: replace monitorpath with monitor_chr
      
      * src/domain_conf.c: handle parsing the monitor type and initializing
        monitor chr
      
      * src/qemu_conf.[ch]: make qemudBuildCommandLine take a
        virDomainChrDefPtr and use that to build the -monitor parameter
      
      * src/qemu_driver.c: split pty specific and common code from
        qemudOpenMonitor, have qemudStartVMDaemon() initialize monitor_chr
      
      * tests/qemuxml2argvtest.c: update for qemudBuildCommandLine() change
      05d377bd
  11. 08 7月, 2009 1 次提交
    • D
      Support <video> element for QEMU guests · ad6d5acb
      Daniel P. Berrange 提交于
      	* src/qemu_conf.c, src/qemu_conf.h: Use -vga or -std-vga
      	when starting guests if video card is present
      	* tests/qemuhelptest.c: Change to use constants instead
      	of hardcoded hex numbers, and add VGA support
      	* tests/qemuxml2argvdata/qemuxml2argv-graphics-sdl-fullscreen.xml,
      	tests/qemuxml2argvdata/qemuxml2argv-graphics-sdl.args,
      	tests/qemuxml2argvdata/qemuxml2argv-graphics-sdl.xml,
      	tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc-sasl.args,
      	tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc-sasl.xml,
      	tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc-tls.xml,
      	tests/qemuxml2argvdata/qemuxml2argv-graphics-vnc.xml,
      	tests/qemuxml2argvdata/qemuxml2argv-input-xen.xml: Add <video>
      	element for testing graphics adapter
      	* tests/qemuxml2argvtest.c: Add QEMUD_CMD_FLAG_VGA flag
      	* tests/qemuxml2xmltest.c: Add missing graphics-vnc-sasl/tls tests
      ad6d5acb
  12. 07 7月, 2009 1 次提交
    • P
      Avoid raising an internal error · b0e48bfd
      Paolo Bonzini 提交于
      * src/qemu_conf.c: when connecting an interface if it reference
        an undefined network, then we used to raise an internal error.
      b0e48bfd
  13. 03 7月, 2009 1 次提交
  14. 30 6月, 2009 1 次提交
  15. 29 6月, 2009 1 次提交
  16. 19 6月, 2009 1 次提交
    • D
      extend the configuration parser for VMX syntax · 144276aa
      Daniel Veillard 提交于
      * qemud/qemud.c src/conf.c src/conf.h src/qemu_conf.c src/xen_unified.c
        src/xm_internal.c tests/conftest.c tests/xmconfigtest.c: extend
        the configuration parser for VMX syntax, patch by Matthias Bolte
      Daniel
      144276aa
  17. 16 6月, 2009 4 次提交
  18. 12 6月, 2009 1 次提交
  19. 11 6月, 2009 3 次提交
    • M
      Add qemu help string parsing tests · 1fbe229b
      Mark McLoughlin 提交于
      Signed-off-by: NMark McLoughlin <markmc@redhat.com>
      1fbe229b
    • M
      Detect newer qemu-kvm versions · 04cbe687
      Mark McLoughlin 提交于
      The KVM version string can be one of the following:
      
        - qemu-kvm-x.y.z in stable releases
        - kvm-XX for kvm versions up to kvm-85
        - qemu-kvm-devel-XX for kvm version kvm-86 and later
      
      There are only a few of places where we need to detect
      differences between KVM versions based on 0.9.1:
      
        1) VNET_HDR introduced in kvm-74
      
        2) -incoming tcp introduced in kvm-79
      
        3) -incoming exec introduced in kvm-80
      
        4) -incoming stdio in all earlier kvm versions
      
      With qemu-kvm-0.10.x, we can now assume that (1) is available
      if it's a KVM release, (2) and (3) is always available and
      (4) is never available.
      
      So, from now on we should only need to check the qemu version
      number and the "is_kvm" flag for detecting feature availability.
      We only need the KVM version number for older releases.
      Signed-off-by: NMark McLoughlin <markmc@redhat.com>
      04cbe687
    • M
      Re-factor qemu version parsing · 56ecebf2
      Mark McLoughlin 提交于
      This patch is purely re-factoring without any functional changes
      to make way for the next patch.
      
      The main thing achieved by the refactoring is that we now have
      easier access to the parenthesised string that KVM folks seem
      to delight in changing.
      Signed-off-by: NMark McLoughlin <markmc@redhat.com>
      56ecebf2
  20. 03 6月, 2009 1 次提交
  21. 29 5月, 2009 1 次提交
    • D
      PPC Qemu Machine Type update · 525c3d40
      Daniel Veillard 提交于
      * src/qemu_conf.c docs/schemas/domain.rng
        tests/capabilityschemadata/caps-qemu-kvm.xml: PPC Qemu Machine Type
        changed from g3bw to g3beige some time ago, patch by Thomas Baker
      Daniel
      525c3d40
  22. 28 5月, 2009 2 次提交