1. 01 5月, 2010 2 次提交
    • D
      Release of libvirt-0.8.1 · 5d65d32f
      Daniel Veillard 提交于
      * configure.ac docs/news.html.in libvirt.spec.in: updates for release
      * po/*.po*: updated localizations and regenerated
      5d65d32f
    • C
      domain: Fix PCI address decimal parsing regression · e9840196
      Cole Robinson 提交于
      <hostdev> address parsing previously attempted to detect the number
      base: currently it is hardcoded to base 16, which can break PCI
      assignment via virt-manager. Revert to the previous behavior.
      
      * src/conf/domain_conf.c: virDomainDevicePCIAddressParseXML, switch to
        virStrToLong_ui(bus, NULL, 0, ...) to autodetect base
      e9840196
  2. 30 4月, 2010 16 次提交
    • D
      Add support for another explicit IO error event · 34dcbbb4
      Daniel P. Berrange 提交于
      This introduces a new event type
      
         VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON
      
      This event is the same as the previous VIR_DOMAIN_ID_IO_ERROR
      event, but also includes a string describing the cause of
      the event.
      
      Thus there is a new callback definition for this event type
      
      typedef void (*virConnectDomainEventIOErrorReasonCallback)(virConnectPtr conn,
                                                                 virDomainPtr dom,
                                                                 const char *srcPath,
                                                                 const char *devAlias,
                                                                 int action,
                                                                 const char *reason,
                                                                 void *opaque);
      
      This is currently wired up to the QEMU block IO error events
      
      * daemon/remote.c: Dispatch IO error events to client
      * examples/domain-events/events-c/event-test.c: Watch for
        IO error events
      * include/libvirt/libvirt.h.in: Define new IO error event ID
        and callback signature
      * src/conf/domain_event.c, src/conf/domain_event.h,
        src/libvirt_private.syms: Extend API to handle IO error events
      * src/qemu/qemu_driver.c: Connect to the QEMU monitor event
        for block IO errors and emit a libvirt IO error event
      * src/remote/remote_driver.c: Receive and dispatch IO error
        events to application
      * src/remote/remote_protocol.x: Wire protocol definition for
        IO error events
      * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h,
        src/qemu/qemu_monitor_json.c: Watch for BLOCK_IO_ERROR event
        from QEMU monitor
      34dcbbb4
    • J
      c90a1ad7
    • S
      Prevent updates while IP address learn thread is running · 5054e892
      Stefan Berger 提交于
      Prevent updating and tearing down of filter while the IP
      address learning thread is running and has its own filtering
      rules applied.
      5054e892
    • S
      Syncronize the teardown of rules with the thread · ebacb31f
      Stefan Berger 提交于
      Introduce a function to notify the IP address learning
      thread to terminate and thus release the lock on the interface.
      Notify the thread before grabbing the lock on the interface
      and tearing down the rules. This prevents a 'virsh destroy' to
      tear down the rules that the IP address learning thread has
      applied.
      ebacb31f
    • S
      Clean all tables before applying 'basic' rules · 59fe163f
      Stefan Berger 提交于
      The functions invoked by the IP address learning thread
      that apply some basic filtering rules did not clean up
      any previous filtering rules that may still be there
      (due to a libvirt restart for example). With the
      patch below all the rules are cleaned up first.
      
      Also, I am introducing a function to drop all traffic
      in case the IP address learning thread could not apply
      the rules.
      59fe163f
    • D
      MAke virFileHasSuffix case insensitive · b9efc7dc
      Daniel Veillard 提交于
      * src/util/util.c: as it's used for checking things like .iso suffixes
      b9efc7dc
    • S
      nwfilter: Also pick IP address from a DHCP ACK message · 7c66c033
      Stefan Berger 提交于
      The local DHCP server on virtbr0 sends DHCP ACK messages when a VM is
      started and requests an IP address while the initial DHCP lease on the
      VM's MAC address hasn't expired. So, also pick the IP address of the VM
      if that type of message is seen.
      Thanks to Gerhard Stenzel for providing a test case for this.
      
      Changes from V1 to V2:
      - cleanup: replacing DHCP option numbers through constants
      7c66c033
    • D
      Fix virt-pki-validate's determination of CN · c179a0f6
      Dustin Kirkland 提交于
      Ubuntu's gntls package generates an Issuer line that looks like this:
              Issuer: C=US,ST=NY,L=Rochester,O=example.com,CN=example.com CA,EMAIL=hostmaster@example.com
      
      While Red Hat's looks like this
      Issuer: CN=Red Hat Emerging Technologies
      
      Note the leading whitespace, and the additional fields in the former.
      
      This patch updates the regular expression to:
       * trim leading characters before "Issuer:"
       * trim anything between Issuer: and CN=
       * trim anything after the next ,
      
      I've tested this against the certool output of both RH and Ubuntu
      generated certs.
      Signed-off-by: NDustin Kirkland <kirkland@canonical.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      c179a0f6
    • J
      qemudDomainSaveFlag: remove dead store · 5b0aed68
      Jim Meyering 提交于
      * src/qemu/qemu_driver.c (qemudDomainSaveFlag): Remove dead store to "rc".
      5b0aed68
    • D
      Fix detection of disk in IO events · 0eecdd68
      Daniel P. Berrange 提交于
      When using -device syntax, the IO event will have a different
      prefix, 'drive-' that needs to be skipped over before matching
      against the libvirt disk alias
      
      * src/qemu/qemu_driver.c: Skip QEMU_DRIVE_HOST_PREFIX in IO event
      0eecdd68
    • D
      Implement python binding for virDomainGetBlockInfo · 05776e09
      Daniel P. Berrange 提交于
      This binds the virDomainGetBlockInfo API to python's blockInfo
      method on the domain object
      
      >>> c = libvirt.openReadOnly('qemu:///session')
      >>> d = c.lookupByName('demo')
      >>> f = d.blockInfo("/dev/loop0", 0)
      >>> print f
      [1048576000L, 104857600L, 104857600L]
      
      * python/libvirt-override-api.xml: Define override signature
      * python/generator.py: Skip C impl generator for virDomainGetBlockInfo
      * python/libvirt-override.c: Manual impl of virDomainGetBlockInfo
      05776e09
    • D
      Add new domblkinfo command to virsh · 7703c2c9
      Daniel P. Berrange 提交于
        virsh # domblkinfo demoguest /dev/hda2
        Capacity:       1048576000
        Allocation:     104857600
        Physical:       104857600
      
      * tools/virsh.c: Implement domblkinfo command mapping to the
        new virDomainGetBlockInfo API
      7703c2c9
    • D
      Implement virDomainGetBlockInfo in QEMU driver · db57a7be
      Daniel P. Berrange 提交于
      * src/qemu/qemu_driver.c: Implementation of virDomainGetBlockInfo
      * src/util/storage_file.h: Add DEV_BSIZE
      * src/storage/storage_backend.c: Remove DEV_BSIZE
      db57a7be
    • D
      Remote protocol impl for virDomainGetBlockInfo · 84a3269a
      Daniel P. Berrange 提交于
      * daemon/remote.c: Server side dispatcher
      * daemon/remote_dispatch_args.h, daemon/remote_dispatch_prototypes.h,
        daemon/remote_dispatch_ret.h, daemon/remote_dispatch_table.h: Update
        with new API
      * src/remote/remote_driver.c: Client side dispatcher
      * src/remote/remote_protocol.c, src/remote/remote_protocol.h: Update
      * src/remote/remote_protocol.x: Define new wire protocol
      84a3269a
    • D
      Internal driver API infrastructure for virDomainGetBlockInfo · 46bad512
      Daniel P. Berrange 提交于
      This defines the internal driver API and stubs out each driver
      
      * src/driver.h: Define virDrvDomainGetBlockInfo signature
      * src/libvirt.c, src/libvirt_public.syms: Glue public API to drivers
      * src/esx/esx_driver.c, src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
        src/openvz/openvz_driver.c, src/phyp/phyp_driver.c,
        src/test/test_driver.c, src/uml/uml_driver.c, src/vbox/vbox_tmpl.c,
        src/xen/xen_driver.c, src/xenapi/xenapi_driver.c: Stub out driver
      46bad512
    • D
      Add virDomainGetBlockInfo API to query disk sizing · 24aad9f7
      Daniel P. Berrange 提交于
      Some applications need to be able to query a guest's disk info,
      even for paths not managed by the storage pool APIs. This adds
      a very simple API to get this information, modelled on the
      virStorageVolGetInfo API, but with an extra field 'physical'.
      Normally 'physical' and 'allocation' will be identical, but
      in the case of a qcow2-like file stored inside a block device
      'physical' will give the block device size, while 'allocation'
      will give the qcow2 image size
      
      * include/libvirt/libvirt.h.in: Define virDomainGetBlockInfo
      24aad9f7
  3. 29 4月, 2010 10 次提交
  4. 28 4月, 2010 11 次提交
    • E
      build: fix autogen rule for VPATH build · 5fe816ec
      Eric Blake 提交于
      * cfg.mk (gnulib_srcdir): Override maint.mk default.
      (_update_required): Run in correct directory.
      5fe816ec
    • D
      Move dnsmasq host file to a separate directory · 4e041189
      Daniel Veillard 提交于
      use /var/lib/libvirt/dnsmasq since /var/lib/libvirt/network is
      unreadable by the dnsmasq binary
      
      * src/network/bridge_driver.c: update DNSMASQ_STATE_DIR
      * src/Makefile.am: create it on make install
      * libvirt.spec.in: take the new directory into account
      4e041189
    • S
      nwfilter: allow to mix filterrefs and rules in the schema · 42f8b25b
      Stefan Berger 提交于
      So far the references to other filters needed to appear before filtering
      rules. With the below patch they can now appear in any order.
      
      Also I forgot to add a couple of 'rarp's.
      42f8b25b
    • D
      Fix handling of security driver restore failures in QEMU domain save · 51cd0196
      Daniel P. Berrange 提交于
      In cases where the security driver failed to restore a label after a
      guest has saved, we mistakenly jumped to the error cleanup paths.
      This is not good, because the operation has in fact completed and
      cannot be rolled back completely. Label restore is non-critical, so
      just log the problem instead. Also add a missing restore call in
      the error cleanup path
      
      * src/qemu/qemu_driver.c: Fix handling of security driver
        restore failures in QEMU domain save
      51cd0196
    • D
      Fix QEMU domain save to block devices with cgroups enabled · 712048bd
      Daniel P. Berrange 提交于
      When cgroups is enabled, access to block devices is likely to be
      restricted to a whitelist. Prior to saving a guest to a block device,
      it is necessary to add the block device to the whitelist. This is
      not required upon restore, since QEMU reads from stdin
      
      * src/qemu/qemu_driver.c: Add block device to cgroups whitelist
        if neccessary during domain save.
      712048bd
    • D
      Fix QEMU save/restore with block devices · 93e0b3c8
      Daniel P. Berrange 提交于
      The save process was relying on use of the shell >> append
      operator to ensure the save data was placed after the libvirt
      header + XML. This doesn't work for block devices though.
      Replace this code with use of 'dd' and its 'seek' parameter.
      This means that we need to pad the header + XML out to a
      multiple of dd block size (in this case we choose 512).
      
      The qemuMonitorMigateToCommand() monitor API is used for both
      save/coredump, and migration via UNIX socket. We can't simply
      switch this to use 'dd' since this causes problems with the
      migration usage. Thus, create a dedicated qemuMonitorMigateToFile
      which can accept an filename + offset, and remove the filename
      from the current qemuMonitorMigateToCommand() API
      
      * src/qemu/qemu_driver.c: Switch to qemuMonitorMigateToFile
        for save and core dump
      * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h,
        src/qemu/qemu_monitor_json.c, src/qemu/qemu_monitor_json.h,
        src/qemu/qemu_monitor_text.c, src/qemu/qemu_monitor_text.h: Create
        a new qemuMonitorMigateToFile, separate from the existing
        qemuMonitorMigateToCommand to allow handling file offsets
      93e0b3c8
    • D
      Avoid create/unlink with block devs used for QEMU save · ae42979a
      Daniel P. Berrange 提交于
      It is possible to use block devices with domain save/restore. Upon
      failure QEMU unlinks the path being saved to. This isn't good when
      it is a block device !
      
      * src/qemu/qemu_driver.c: Don't unlink block devices if save fails
      ae42979a
    • D
      Fix crash when cleaning up from failed save attempt · d7e0fe6e
      Daniel P. Berrange 提交于
      If a transient QEMU crashes during save attempt, then the virDomainPtr
      object may be freed. If a persistent QEMU crashes during save, then
      the 'priv->mon' field is no longer valid since it will be inactive.
      
      * src/qemu/qemu_driver.c: Fix two crashes when QEMU exits
        during a save attempt
      d7e0fe6e
    • S
      nwfilter: let qemu's after-migration packet pass · ed7813d2
      Stefan Berger 提交于
      Qemu currently sends an Ethernet packet with protocol id 0x835 once a VM
      was successfully migrated. The content of the packet looks like a
      gratuitous RARP, just with the wrong protocol ID, which should be
      0x8035. I wrote some filters to let either one of the packets pass and
      am adapting the clean-traffic sample filter to use it. I am also
      doing some changes on the existing ARP filter which was lacking a
      test for source MAC address.
      ed7813d2
    • C
    • K
      75d88455
  5. 27 4月, 2010 1 次提交
    • C
      Fix up the locking in the snapshot code. · b69bbebb
      Chris Lalancette 提交于
      In particular I was forgetting to take the qemuMonitorPrivatePtr
      lock (via qemuDomainObjBeginJob), which would cause problems
      if two users tried to access the same domain at the same time.
      This patch also fixes a problem where I was forgetting to remove
      a transient domain from the list of domains.
      
      Thanks to Stephen Shaw for pointing out the problem and testing
      out the initial patch.
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      b69bbebb