1. 04 11月, 2009 1 次提交
    • C
      Various error reporting fixes · 4c44cdcc
      Cole Robinson 提交于
      - Don't duplicate SystemError
      - Use proper error code in domain_conf
      - Fix a broken error call in qemu_conf
      - Don't use VIR_ERR_ERROR in security driver (isn't a valid code in this case)
      4c44cdcc
  2. 03 11月, 2009 4 次提交
    • C
      Fix up NLS warnings. · 991be604
      Chris Lalancette 提交于
      When building with --disable-nls, I got a few messages like this:
      
      storage/storage_backend.c: In function 'virStorageBackendCreateQemuImg':
      storage/storage_backend.c:571: warning: format not a string literal and no format arguments
      
      Fix these up.
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      991be604
    • D
      Rename internal APis · fc8d1991
      Daniel P. Berrange 提交于
      Rename virDomainIsActive to virDomainObjIsActive, and
      virInterfaceIsActive to virInterfaceObjIsActive and finally
      virNetworkIsActive to virNetworkObjIsActive.
      
      * src/conf/domain_conf.c, src/conf/domain_conf.h,
        src/conf/interface_conf.h, src/conf/network_conf.c,
        src/conf/network_conf.h, src/lxc/lxc_driver.c,
        src/network/bridge_driver.c, src/opennebula/one_driver.c,
        src/openvz/openvz_driver.c, src/qemu/qemu_driver.c,
        src/test/test_driver.c, src/uml/uml_driver.c: Update for
        renamed APIs.
      fc8d1991
    • D
      Annotate many methods with ATTRIBUTE_RETURN_CHECK & fix problems · 46992453
      Daniel P. Berrange 提交于
      Nearly all of the methods in src/util/util.h have error codes that
      must be checked by the caller to correct detect & report failure.
      Add ATTRIBUTE_RETURN_CHECK to ensure compile time validation of
      this
      
      * daemon/libvirtd.c: Add explicit check on return value of virAsprintf
      * src/conf/domain_conf.c: Add missing check on virParseMacAddr return
        value status & report error
      * src/network/bridge_driver.c: Add missing OOM check on virAsprintf
        and report error
      * src/qemu/qemu_conf.c: Add missing check on virParseMacAddr return
        value status & report error
      * src/security/security_selinux.c: Remove call to virRandomInitialize
        that's done in libvirt.c already
      * src/storage/storage_backend_logical.c: Add check & log on virRun
        return status
      * src/util/util.c: Add missing checks on virAsprintf/Run status
      * src/util/util.h: Annotate all methods with ATTRIBUTE_RETURN_CHECK
        if they return an error status code
      * src/vbox/vbox_tmpl.c: Add missing check on virParseMacAddr
      * src/xen/xm_internal.c: Add missing checks on virAsprintf
      * tests/qemuargv2xmltest.c: Remove bogus call to virRandomInitialize()
      46992453
    • D
      Allow for a driver specific private data blob in virDomainObjPtr · 3505790b
      Daniel P. Berrange 提交于
      The virDomainObjPtr object stores state about a running domain.
      This object is shared across all drivers so it is not appropriate
      to include driver specific state here. This patch adds the ability
      to request a blob of private data per domain object instance. The
      driver must provide a allocator & deallocator for this purpose
      
      THis patch abuses the virCapabilitiesPtr structure for storing the
      allocator/deallocator callbacks, since it is already being abused
      for other internal things relating to parsing. This should be moved
      out into a separate object at some point.
      
      * src/conf/capabilities.h: Add privateDataAllocFunc and
        privateDataFreeFunc fields
      * src/conf/domain_conf.c: Invoke the driver allocators / deallocators
        when creating/freeing virDomainObjPtr instances.
      * src/conf/domain_conf.h: Pass virCapsPtr into virDomainAssignDef
        to allow access to the driver specific allocator function
      * src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
        src/openvz/openvz_driver.c, src/qemu/qemu_driver.c,
        src/test/test_driver.c, src/uml/uml_driver.c: Update for
        change in virDomainAssignDef contract
      3505790b
  3. 29 10月, 2009 1 次提交
    • D
      Convert virDomainObjListPtr to use a hash of domain objects · a3adcce7
      Daniel P. Berrange 提交于
      The current virDomainObjListPtr object stores domain objects in
      an array. This means that to find a particular objects requires
      O(n) time, and more critically acquiring O(n) mutex locks.
      
      The new impl replaces the array with a virHashTable, keyed off
      UUID. Finding a object based on UUID is now O(1) time, and only
      requires a single mutex lock. Finding by name/id is unchanged
      in complexity.
      
      In changing this, all code which iterates over the array had
      to be updated to use a hash table iterator function callback.
      Several of the functions which were identically duplicating
      across all drivers were pulled into domain_conf.c
      
      * src/conf/domain_conf.h, src/conf/domain_conf.c: Change
        virDomainObjListPtr to use virHashTable. Add a initializer
        method virDomainObjListInit, and rename virDomainObjListFree
        to virDomainObjListDeinit, since its not actually freeing
        the container, only its contents. Also add some convenient
        methods virDomainObjListGetInactiveNames,
        virDomainObjListGetActiveIDs and virDomainObjListNumOfDomains
        which can be used to implement the correspondingly named
        public API entry points in drivers
      * src/libvirt_private.syms: Export new methods from domain_conf.h
      * src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
        src/openvz/openvz_conf.c, src/openvz/openvz_driver.c,
        src/qemu/qemu_driver.c, src/test/test_driver.c,
        src/uml/uml_driver.c, src/vbox/vbox_tmpl.c: Update all code
        to deal with hash tables instead of arrays for domains
      a3adcce7
  4. 21 10月, 2009 1 次提交
  5. 12 10月, 2009 1 次提交
    • M
      Take domain type into account when looking up default machine · 73c901a8
      Mark McLoughlin 提交于
      If one has e.g.
      
        <guest>
          <os_type>hvm</os_type>
          <arch name='x86_64'>
            <wordsize>64</wordsize>
            <emulator>/usr/bin/qemu-system-x86_64</emulator>
            <machine>pc-0.11</machine>
            <machine canonical='pc-0.11'>pc</machine>
            <machine>pc-0.10</machine>
            <machine>isapc</machine>
            <domain type='qemu'>
            </domain>
            <domain type='kvm'>
              <emulator>/usr/bin/kvm</emulator>
              <machine>pc</machine>
              <machine>isapc</machine>
            </domain>
          </arch>
        </guest>
      
      and start a guest with:
      
        <domain type='kvm'>
          ...
          <os>
            <type arch='x86_64'>hvm</type>
            ...
          </os>
        </domain>
      
      then the default machine type should be 'pc' and not 'pc-0.11'
      
      Issue was reported by Anton Protopopov.
      
      * src/capabilities.[ch]: pass the domain type to
        virCapabilitiesDefaultGuestArch() and use it to look up the default
        machine type from a specific guest domain if needed.
      
      * src/conf/domain_conf.c, src/xen/xm_internal.c: update
      
      * tests/qemuxml2argvdata/qemuxml2argv-machine-aliases2.xml: update
        the domain type to 'kvm' and remove the machine type to check
        that the default gets looked up correctly
      73c901a8
  6. 01 10月, 2009 2 次提交
  7. 30 9月, 2009 1 次提交
    • D
      523639 Allows a <description> tag for domains · 8fc469b3
      Daniel Veillard 提交于
      * docs/schemas/domain.rng: allow one <description> tag in the top level
        of the <domain> to store user information as text
      * src/conf/domain_conf.c src/conf/domain_conf.h: extend the structure
        to store this text, grab it at parse time and save it back when
        present after <uuid>
      8fc469b3
  8. 22 9月, 2009 1 次提交
    • R
      lxc: suspend/resume support · c8c9ef27
      Ryota Ozaki 提交于
      * src/conf/domain_conf.c: Don't assume all virDomainObjPtr have
        a non-NULL monitor_chr field in virDomainObjFormat.
      * src/lxc/lxc_driver.c: Implement suspend/resume driver APis
      * src/util/cgroup.c, src/util/cgroup.h: Support the 'freezer'
        cgroup controller
      * src/libvirt_private.syms: Export virCgroupSetFreezerState
        and virCgroupGetFreezerState
      c8c9ef27
  9. 21 9月, 2009 1 次提交
    • D
      Move all XML configuration handling to src/conf/ · e0a48c99
      Daniel P. Berrange 提交于
      * src/capabilities.c, src/capabilities.h, src/domain_conf.c,
        src/domain_conf.h, src/domain_event.c, src/domain_event.h,
        src/interface_conf.c, src/interface_conf.h,
        src/network_conf.c, src/network_conf.h, src/node_device_conf.c,
        src/node_device_conf.h, src/secret_conf.c, src/secret_conf.h,
        src/storage_conf.c, src/storage_conf.h, src/storage_encryption_conf.c,
        src/storage_encryption_conf.h: Move to src/conf/
      * src/Makefile.am: Add -Isrc/conf to the individual build targets
        which need to use XML config APIs. Remove LIBXML_CFLAGS, LIBSSH2_CFLAGS
        and SELINUX_CFLAGS from global INCLUDES and only have them in build
        targets which actually need them.  Create a libvirt_conf.la
        convenience library for all config parsers
      * src/hostusb.h: Remove bogus include of domain_conf.h
      * tests/Makefile.am: Add -Isrc/conf. Remove bogus -I$builddir/src
        since it never has any generated header files
      * daemon/Makefile.am: Add -Isrc/conf
      * proxy/Makefile.am: Add -Isrc/conf and cope with renamed files
      * src/hash.c: Remove bogus include of libxml/threads.h
      e0a48c99
  10. 14 9月, 2009 1 次提交
    • D
      Save vcpuinfo in status file · f2ad7824
      Daniel P. Berrange 提交于
      * src/qemu_driver.c: Don't trust monitor for vcpu PID info on
        restart
      * src/domain_conf.c: Save and load vCPU PID info from domain
        status file
      f2ad7824
  11. 08 9月, 2009 1 次提交
  12. 04 9月, 2009 1 次提交
    • R
      Fix several memory leaks · 0cf672fa
      Ryota Ozaki 提交于
      * src/domain_conf.c src/network_conf.c src/qemu_conf.c
        src/storage_backend_fs.c: various problems spotted by valgrind
        through libvirt code
      0cf672fa
  13. 03 9月, 2009 3 次提交
    • D
      Add support for setting disk drive serial numbers · 85d15b51
      Daniel P. Berrange 提交于
      * docs/schemas/domain.rng: Add <serial> element to disks
      * src/domain_conf.h, src/domain_conf.c: XML parsing and
        formatting for disk serial numbers
      * src/qemu_conf.c: Set serial number when launching guests
      * tests/qemuxml2argvdata/qemuxml2argv-disk-drive-shared.args,
        tests/qemuxml2argvdata/qemuxml2argv-disk-drive-shared.xml: Add
        serial number to XML test
      85d15b51
    • D
      Support configuration of huge pages in guests · d823a05a
      Daniel P. Berrange 提交于
      Add option to domain XML for
      
           <memoryBacking>
              <hugepages/>
           </memoryBacking>
      
      * configure.in: Add check for mntent.h
      * qemud/libvirtd_qemu.aug, qemud/test_libvirtd_qemu.aug, src/qemu.conf
        Add 'hugetlbfs_mount' config parameter
      * src/qemu_conf.c, src/qemu_conf.h: Check for -mem-path flag in QEMU,
        and pass it when hugepages are requested.
        Load hugetlbfs_mount config parameter, search for mount if not given.
      * src/qemu_driver.c: Free hugetlbfs_mount/path parameter in driver shutdown.
        Create directory for QEMU hugepage usage, chowning if required.
      * docs/formatdomain.html.in: Document memoryBacking/hugepages elements
      * docs/schemas/domain.rng: Add memoryBacking/hugepages elements to schema
      * src/util.c, src/util.h, src/libvirt_private.syms: Add virFileFindMountPoint
        helper API
      * tests/qemuhelptest.c: Add -mem-path constants
      * tests/qemuxml2argvtest.c, tests/qemuxml2xmltest.c: Add tests for hugepage
        handling
      * tests/qemuxml2argvdata/qemuxml2argv-hugepages.xml,
        tests/qemuxml2argvdata/qemuxml2argv-hugepages.args: Data files for
        hugepage tests
      d823a05a
    • P
      Generic parsing support for video acceleration · 6aa576cd
      Pritesh Kothari 提交于
      * docs/schemas/domain.rng: augment the video model with an optional
        acceleration element with optional accel2d and accel3d flags
      * src/domain_conf.c src/domain_conf.h: exten the virDomainVideoDef
        structure with an optional accel field, virDomainVideoAccelDefParseXML
        and virDomainVideoAccelDefFormat functions to parse and serialize
        the structure.
      6aa576cd
  14. 02 9月, 2009 2 次提交
    • D
      Don't blindly reorder disk drives · 2d6adabd
      Daniel P. Berrange 提交于
      Calling qsort() on the disks array causes disk to be
      unneccessarily re-ordered, potentially breaking the
      ability to boot if the boot disk gets moved later in
      the list. The new algorithm will insert a new disk as
      far to the end of the list as possible, while being
      ordered correctly wrt other disks on the same bus.
      
      * src/domain_conf.c, src/domain_conf.h: Remove disk sorting
        routines. Add API to insert a disk into existing list at
        the optimal position, without resorting disks
      * src/libvirt_private.syms: Export virDomainDiskInsert
      * src/xend_internal.c, src/xm_internal.c: Remove calls to
        qsort, use virDomainDiskInsert instead.
      * src/qemu_driver.c: Remove calls to qsort, use virDoaminDiskInsert
        instead. Fix reordering bugs when hotunplugging disks and
        networks. Fix memory leak in disk/net unplug
      2d6adabd
    • M
      Attach encryption information to virDomainDiskDef. · f340964d
      Miloslav Trmač 提交于
      The XML allows <encryption format='unencrypted'/>, this implementation
      canonicalizes the internal representation so that "disk->encryption" is
      non-NULL iff encryption information is available.
      
      A domain with partial encryption information can be defined,
      completeness of the information is not verified.  The domain won't
      start until the remaining information is added, of course.
      
      * docs/formatdomain.html, docs/formatdomain.html.in: Document
        new encryption options for disks
      * docs/schemas/domain.rng: Pull in storage encryption schema
        rules
      * src/domain_conf.h, src/domain_conf.c: Wire up storage encryption
        XML parsing/formatting APIs
      f340964d
  15. 17 8月, 2009 1 次提交
    • D
      Fix LXC driver crash when kernel doesn't support clone · e403f8d4
      Daniel P. Berrange 提交于
      * src/domain_conf.c: Make virDomainObjListFree a no-op if list
        is NULL
      * src/domain_event.c: make virDomainEventCallbackListFree a no-op
        if event list is NULL
      * src/lxc_driver.c: Log a message if LXC driver does not startup
        due to lacking kernel support
      e403f8d4
  16. 14 8月, 2009 1 次提交
    • M
      Add host PCI device hotplug support · 0c5b7b93
      Mark McLoughlin 提交于
      Attaching a host PCI device to a qemu guest is done with a
      straightforward 'pci_add auto host host=XX:XX.X' command.
      
      Like with NIC and disk hotplug, we need to retain the guest PCI address
      assigned by qemu so that we can use it for hot-unplug.
      
      Identifying a device for detach is done using the host PCI address.
      
      Managed mode is handled by detaching/resetting the device before
      attaching it to the guest and re-attaching it after detaching it from
      the guest.
      
      * src/qemu_driver.c: add qemudDomainAttachHostPciDevice() and
        qemudDomainDetachHostPciDevice()
      
      * src/domain_conf.h: add somewhere to store the guest PCI address
      
      * src/domain_conf.c: handle formatting and parsing the guest PCI
        address
      0c5b7b93
  17. 24 7月, 2009 2 次提交
    • E
      First version of the Power Hypervisor driver · a7a82f98
      Eduardo Otubo 提交于
      Features supported:
      - Connects to HMC/VIOS or IVM systems.
      - Life cycle commands (resume and shutdown).
      - dumpxml
      - 'list' and 'list --all'
      
      What is being implemented:
      - better and centralized control for UUID
      - definexml
      - CPU management commands
      
      * src/domain_conf.c src/domain_conf.h: first version of the driver
      * configure.in src/Makefile.am include/libvirt/virterror.h
        src/domain_conf.[ch] src/libvirt.c src/virterror.c: glue the driver
        in the general framework
      a7a82f98
    • L
      Add bare format string to printf-derivatives troubles · 165ed4a0
      Laine Stump 提交于
      * src/datatypes.c src/domain_conf.c src/interface_conf.c
        src/lxc_driver.c src/qemu_driver.c src/storage_backend.c src/virsh.c:
        add bare %s format string to printf-derivatives called with no format
        string
      165ed4a0
  18. 22 7月, 2009 6 次提交
    • M
      Retain PCI address from NIC attach · 4e21a95a
      Mark McLoughlin 提交于
      When we pci_add a NIC, we need to retain the PCI address assigned by
      qemu for using during detach.
      
      * src/qemu_driver.c: use qemudParsePciAddReply() to pull the PCI
        address from the pci_add reply
      
      * src/domain_conf.c: handle storing and parsing the PCI address in the
        domain state XML file
      4e21a95a
    • 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
      Add NIC and hostnet names to domain state XML · 36c820e6
      Mark McLoughlin 提交于
      The qemu driver needs to assign and keep track of identifiers for
      network devices so that it can remove them. We need to keep this state
      across libvirtd restarts, but it's not configuration that needs to
      be kept across guest restarts.
      
      * src/domain_conf.c: parse and format <state nic="foo" hostnet="bar"/>
      36c820e6
    • 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
      Retain disk PCI address across libvirtd restarts · 01654107
      Mark McLoughlin 提交于
      When we hot-plug a disk device into a qemu guest, we need to retain its
      PCI address so that it can be removed again later. Currently, we do
      retain the slot number, but not across libvirtd restarts.
      
      Add <state devaddr="xxxx:xx:xx"/> to the disk device XML config when the
      VIR_DOMAIN_XML_INTERNAL_STATUS flag is used. We still don't parse the
      domain and bus number, but the format allows us to do that in future.
      
      * src/domain_conf.h: replace slotnum with pci_addr struct, add helper
        for testing whether the address is valid
      
      * src/domain_conf.c: handle formatting and parsing the address
      
      * src/qemu_driver.c: store the parsed slot number as a full PCI address,
        and use this address with the pci_del monitor command
      
      * src/vbox/vbox_tmpl.c: we're debug printing slotnum here even though
        it can never be set, just delete it
      01654107
    • M
      Add internal XML parsing/formatting flag · aa98871c
      Mark McLoughlin 提交于
      We need to store things like device names and PCI slot numbers in the
      qemu domain state file so that we don't lose that information on
      libvirtd restart. Add a flag to indicate that this information should
      be parsed or formatted.
      
      Make bit 16 and above of the flags bitmask for internal use only and
      consume the first bit for this new status flag.
      
      * include/libvirt/libvirt.h: add VIR_DOMAIN_XML_FLAGS_MASK
      
      * src/libvirt.c: reject private flags in virDomainGetXMLDesc()
      
      * src/domain_conf.h: add VIR_DOMAIN_XML_INTERNAL_STATUS
      
      * src/domain_conf.c: pass the flag from virDomainObjParseXML() and
        virDomainSaveStatus
      aa98871c
  19. 11 7月, 2009 1 次提交
  20. 10 7月, 2009 3 次提交
    • M
      Use virDomainChrTypeFromString() instead of open coding · 13709bdb
      Mark McLoughlin 提交于
      * src/domain_conf.c: replace open coded chr type parsing with
        virDomainChrTypeFromString(), retaining the existing semantics
        where unknown types are silently mapped to the "null" type and
        "pty" is used if none is specified
      13709bdb
    • M
      Switch to using a unix socket for the qemu monitor · 62455ed8
      Mark McLoughlin 提交于
      We keep support for the pty based monitor so that we can re-connect
      to VMs started by older versions of libvirtd.
      
      * src/domain_conf.c: handle formatting and parsing unix monitors
      
      * src/qemu_driver.c: add qemudOpenMonitorUnix(), remove the monitor
        pty path searching from qemudFindCharDevicePTYs(), switch
        qemudStartVMDaemon() and qemuDomainXMLToNative() to using a unix
        monitor
      
      * tests/qemuxml2argvtest.c: switch to using a unix monitor
      
      * tests/qemuxml2argvdata/qemuxml2argv-*.args: update test data
      62455ed8
    • 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
  21. 08 7月, 2009 1 次提交
  22. 25 6月, 2009 1 次提交
    • D
      Fix a couple of state problems · d45242c6
      Daniel Veillard 提交于
      * src/qemu_driver.c: fix a domain state problem after
        migration, patch  by Federico Simoncelli, fixes #507537
      * src/domain_conf.c:  fix a transcient domain state problem after
        destroy, patch  by Federico Simoncelli, fixes #507304
      * AUTHORS: add Federico Simoncelli and Javier Fontan
      daniel
      d45242c6
  23. 17 6月, 2009 1 次提交
  24. 16 6月, 2009 1 次提交
  25. 12 6月, 2009 1 次提交