1. 06 7月, 2011 2 次提交
    • M
      Fix return value semantic of virFileMakePath · e123e1ee
      Matthias Bolte 提交于
      Some callers expected virFileMakePath to set errno, some expected
      it to return an errno value. Unify this to return 0 on success and
      -1 on error. Set errno to report detailed error information.
      
      Also optimize virFileMakePath if stat fails with an errno different
      from ENOENT.
      e123e1ee
    • L
      conf: fix domain parse flags · d3f7c7b1
      Laine Stump 提交于
      * Change all flags args from int to unsigned int
      
      * Allow passing flags in virDomainObjParseFile (and propogate those
        flags all the way down the call chain). Previously the flags were
        hardcoded (to VIR_DOMAIN_XML_INTERNAL_STATUS) several layers down
        the chain. Pass that value in at the one place that is currently
        calling virDomainObjParseFile.
      d3f7c7b1
  2. 05 7月, 2011 1 次提交
  3. 04 7月, 2011 2 次提交
    • D
      Allow for resource relabelling with static labels · 6321fd97
      Daniel P. Berrange 提交于
      Add a new attribute to the <seclabel> XML to allow resource
      relabelling to be enabled with static label usage.
      
        <seclabel model='selinux' type='static' relabel='yes'>
          <label>system_u:system_r:svirt_t:s0:c392,c662</label>
        </seclabel>
      
      * docs/schemas/domain.rng: Add relabel attribute
      * src/conf/domain_conf.c, src/conf/domain_conf.h: Parse
        the 'relabel' attribute
      * src/qemu/qemu_process.c: Unconditionally clear out the
        'imagelabel' attribute
      * src/security/security_apparmor.c: Skip based on 'relabel'
        attribute instead of label type
      * src/security/security_selinux.c: Skip based on 'relabel'
        attribute instead of label type and fill in <imagelabel>
        attribute if relabel is enabled.
      6321fd97
    • D
      Allow a base label to be specified in dynamic labelling mode · 4ebfc427
      Daniel P. Berrange 提交于
      Normally the dynamic labelling mode will always use a base
      label of 'svirt_t' for VMs. Introduce a <baselabel> field
      in the <seclabel> XML to allow this base label to be changed
      
      eg
      
         <seclabel type='dynamic' model='selinux'>
           <baselabel>system_u:object_r:virt_t:s0</baselabel>
         </seclabel>
      
      * docs/schemas/domain.rng: Add <baselabel>
      * src/conf/domain_conf.c, src/conf/domain_conf.h: Parsing
        of base label
      * src/qemu/qemu_process.c: Don't reset 'model' attribute if
        a base label is specified
      * src/security/security_apparmor.c: Refuse to support base label
      * src/security/security_selinux.c: Use 'baselabel' when generating
        label, if available
      4ebfc427
  4. 30 6月, 2011 1 次提交
    • W
      Fix memory leak in virDomainVcpuPinDel() · 53d03ba8
      Wen Congyang 提交于
      virDomainVcpuPinDefFree() does not free def->cputune.vcpupin if nvcpupin
      is 0, and does not set def->cputune.vcpupin to NULL.
      
      If we set nvcpupin to 0 but do not free vcpupin, vcpupin will not be freed
      when vm->def is freed.
      
      Use VIR_FREE() instead of virDomainVcpuPinDefFree() to free the memory
      and set def->cputune.vcpupint to NULL.
      53d03ba8
  5. 29 6月, 2011 1 次提交
  6. 27 6月, 2011 1 次提交
    • E
      build: rename Vcpupin to VcpuPin · 28e45afc
      Eric Blake 提交于
      We already have a public virDomainPinVcpu, which implies that
      Pin and Vcpu are treated as separate words.  Unreleased commit
      e261987c introduced virDomainGetVcpupinInfo as the first public
      API that used Vcpupin, although we had prior internal uses of
      that spelling.  For consistency, change the spelling to be two
      words everywhere, regardless of whether pin comes first or last.
      
      * daemon/remote.c: Treat vcpu and pin as separate words.
      * include/libvirt/libvirt.h.in: Likewise.
      * src/conf/domain_conf.c: Likewise.
      * src/conf/domain_conf.h: Likewise.
      * src/driver.h: Likewise.
      * src/libvirt.c: Likewise.
      * src/libvirt_private.syms: Likewise.
      * src/libvirt_public.syms: Likewise.
      * src/libxl/libxl_driver.c: Likewise.
      * src/qemu/qemu_driver.c: Likewise.
      * src/remote/remote_driver.c: Likewise.
      * src/xen/xend_internal.c: Likewise.
      * tools/virsh.c: Likewise.
      * src/remote/remote_protocol.x: Likewise.
      * src/remote_protocol-structs: Likewise.
      Suggested by Matthias Bolte.
      28e45afc
  7. 25 6月, 2011 2 次提交
  8. 24 6月, 2011 1 次提交
  9. 23 6月, 2011 2 次提交
  10. 22 6月, 2011 1 次提交
    • M
      qemu: domain I/O asynchronous handling · 017abcbb
      Michal Privoznik 提交于
      For virtio disks and interfaces, qemu allows users to enable or disable
      ioeventfd feature. This means, qemu can execute domain code, while
      another thread waits for I/O event. Basically, in some cases it is win,
      in some loss. This feature is available via 'ioeventfd' attribute in disk
      and interface <driver> element. It accepts 'on' and 'off'. Leaving this
      attribute out defaults to hypervisor decision.
      017abcbb
  11. 21 6月, 2011 3 次提交
    • C
      Promote virEvent*Handle/Timeout to public API · 6094ad7b
      Cole Robinson 提交于
      Since we virEventRegisterDefaultImpl is now a public API, callers need
      a way to invoke the default registered Handle and Timeout functions. We
      already have general functions for these internally, so promote
      them to the public API.
      
      v2:
          Actually add APIs to libvirt.h
      6094ad7b
    • O
      conf: Make full use of goto label · a22dbe0d
      Osier Yang 提交于
      * virDomainDefParse: There is a goto label "no_memory", which
      reports OOM error, and then fallthrough label "error". This
      patch changes things like following:
      
          virReportOOMError();
          goto error;
      
      into:
      
          goto no_memory;
      a22dbe0d
    • O
      conf: Fix one memory leak · 9a2ac25a
      Osier Yang 提交于
      Free def->numatune.memory.nodemask in virDomainDefFree.
      9a2ac25a
  12. 20 6月, 2011 2 次提交
  13. 15 6月, 2011 4 次提交
    • D
      support for Xen HVM Viridian (Hyper-V) enlightenment interface · c4bd6d96
      Daniel Gollub 提交于
      Introduce libvirt support for Xen HVM Viridian (Hyper-V) enlightenment
      interface guest feature.
      
       src/conf/domain_conf.c     |    3 ++-
       src/conf/domain_conf.h     |    1 +
       src/xen/xen_hypervisor.c   |   11 +++++++++++
       src/xenapi/xenapi_driver.c |    2 ++
       src/xenapi/xenapi_utils.c  |    2 ++
       src/xenxs/xen_sxpr.c       |    4 ++++
       src/xenxs/xen_xm.c         |   12 +++++++++++-
       7 files changed, 33 insertions(+), 2 deletions(-)
      c4bd6d96
    • A
      Asynchronous event for BlockPull completion · 12cd77a0
      Adam Litke 提交于
      When an operation started by virDomainBlockPullAll completes (either with
      success or with failure), raise an event to indicate the final status.  This
      allows an API user to avoid polling on virDomainBlockPullInfo if they would
      prefer to use the event mechanism.
      
      * daemon/remote.c: Dispatch events to client
      * include/libvirt/libvirt.h.in: Define event ID and callback signature
      * src/conf/domain_event.c, src/conf/domain_event.h,
        src/libvirt_private.syms: Extend API to handle the new event
      * src/qemu/qemu_driver.c: Connect to the QEMU monitor event
        for block_stream completion and emit a libvirt block pull event
      * src/remote/remote_driver.c: Receive and dispatch events to application
      * src/remote/remote_protocol.x: Wire protocol definition for the event
      * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h,
        src/qemu/qemu_monitor_json.c: Watch for BLOCK_STREAM_COMPLETED event
        from QEMU monitor
      Signed-off-by: NAdam Litke <agl@us.ibm.com>
      12cd77a0
    • M
      spice: add <clipboard copypaste='yes|no'> option · 98bfdff1
      Marc-André Lureau 提交于
      From a security pov copy and paste between the guest and the client is not
      always desirable. So we need to be able to enable/disable this. The best place
      to do this from an administration pov is on the hypervisor, so the qemu cmdline
      is getting a spice disable-copy-paste option, see bug 693645. Example qemu
      invocation:
      qemu -spice port=5932,disable-ticketing,disable-copy-paste
      
      https://bugzilla.redhat.com/show_bug.cgi?id=693661
      98bfdff1
    • M
      Fix autostart flag when loading running domains · 30697181
      Michael Chapman 提交于
      Drivers load running persistent and transient domain configs before
      inactive persistent domain configs, however only the latter would set a
      domain's autostart flag. This mismatch between the loaded and on-disk
      state could later cause problems with "virsh autostart":
      
        # virsh autostart example
        error: Failed to mark domain example as autostarted
        error: Failed to create symlink '/etc/libvirt/qemu/autostart/example.xml to '/etc/libvirt/qemu/example.xml': File exists
      
      This patch ensures the autostart flag is set correctly even when the
      domain is already defined.
      
      Fixes:
      
        https://bugzilla.redhat.com/show_bug.cgi?id=632100
        https://bugzilla.redhat.com/show_bug.cgi?id=675319Signed-off-by: NMichael Chapman <mike@very.puzzling.org>
      30697181
  14. 13 6月, 2011 1 次提交
    • W
      support multifunction PCI device · 9f8baf64
      Wen Congyang 提交于
      If qemu supports multi function PCI device, the format of the PCI address passed
      to qemu is "bus=pci.0,multifunction=on,addr=slot.function".
      
      If qemu does not support multi function PCI device, the format of the PCI address
      passed to qemu is "bus=pci.0,addr=slot".
      9f8baf64
  15. 08 6月, 2011 1 次提交
    • E
      build: silence coverity false positives · 1eca8c3e
      Eric Blake 提交于
      Coverity complained about these intentional fallthrough cases, but
      not about other cases that were explicitly marked with nice comments.
      
      For some reason, Coverity doesn't seem smart enough to parse the
      up-front English comment in virsh about intentional fallthrough :)
      
      * tools/virsh.c (cmdVolSize): Mark fallthrough in a more typical
      fashion.
      * src/conf/nwfilter_conf.c (virNWFilterRuleDefDetailsFormat)
      (virNWFilterRuleDetailsParse): Mark explicit fallthrough.
      1eca8c3e
  16. 03 6月, 2011 2 次提交
  17. 02 6月, 2011 3 次提交
    • D
      Allow leases to be hotpluged with QEMU guests · 30ffe7bc
      Daniel P. Berrange 提交于
      * src/conf/domain_conf.c, src/conf/domain_conf.h: APIs for
        inserting/finding/removing virDomainLeaseDefPtr instances
      * src/qemu/qemu_driver.c: Wire up hotplug/unplug for leases
      * src/qemu/qemu_hotplug.h, src/qemu/qemu_hotplug.c: Support
        for hotplug and unplug of leases
      30ffe7bc
    • D
      Support leases in guest XML and lock manager · 1ea83207
      Daniel P. Berrange 提交于
      A lock manager may operate in various modes. The direct mode of
      operation is to obtain locks based on the resources associated
      with devices in the XML. The indirect mode is where the app
      creating the domain provides explicit leases for each resource
      that needs to be locked. This XML extension allows for listing
      resources in the XML
      
        <devices>
           ...
           <lease>
             <lockspace>somearea</lockspace>
             <key>thequickbrownfoxjumpsoverthelazydog</key>
             <target path='/some/lease/path' offset='23432'/>
           </lease>
           ...
        </devices>
      
      The 'lockspace' is a unique identifier for the lockspace which
      the lease is associated
      
      The 'key' is a unique identifier for the resource associated
      with the lease.
      
      The 'target' is the file on disk where the leases are held.
      
      * docs/schemas/domain.rng: Add lease schema
      * src/conf/domain_conf.c, src/conf/domain_conf.h: parsing and
        formatting for leases
      * tests/qemuxml2argvdata/qemuxml2argv-lease.args,
        tests/qemuxml2argvdata/qemuxml2argv-lease.xml,
        tests/qemuxml2xmltest.c: Test XML handling for leases
      1ea83207
    • J
      Fix order of disks and controllers · c1a98d88
      Jiri Denemark 提交于
      Commit 2d6adabd replaced qsorting disk
      and controller devices with inserting them at the right position. That
      was to fix unnecessary reordering of devices. However, when parsing
      domain XML devices are just taken in the order in which they appear in
      the XML since. Use the correct insertion algorithm to honor device
      target.
      c1a98d88
  18. 31 5月, 2011 3 次提交
    • M
      conf: Fix incorrect spice graphic XML format on compression options · 155542a5
      Michal Privoznik 提交于
      If spice graphics has no <channel> elements, the output graphics XML
      is messed up. To prevent this, we need to end the <graphics> element
      just before adding any compression selecting elements.
      155542a5
    • D
      Add an API for comparing the ABI of two guest configurations · 08106e20
      Daniel P. Berrange 提交于
      To allow a client app to pass in custom XML during migration
      of a guest it is neccessary to ensure the guest ABI remains
      unchanged. The virDomainDefCheckABIStablity method accepts
      two virDomainDefPtr structs and compares everything in them
      that could impact the guest machine ABI
      
      * src/conf/domain_conf.c, src/conf/domain_conf.h,
        src/libvirt_private.syms: Add virDomainDefCheckABIStablity
      * src/conf/cpu_conf.c, src/conf/cpu_conf.h: Add virCPUDefIsEqual
      * src/util/sysinfo.c, src/util/sysinfo.h: Add virSysinfoIsEqual
      08106e20
    • D
      Remove unused 'target' field in virDomainHostdevDef · 0e4d4afb
      Daniel P. Berrange 提交于
      The virDomainHostdevDef struct contains a 'char *target'
      field. This is set to 'NULL' when parsing XML and never
      used / set anywhere else. Clearly it is bogus & unused
      
      * src/conf/domain_conf.c, src/conf/domain_conf.h: Remove
        target from virDomainHostdevDef
      0e4d4afb
  19. 29 5月, 2011 1 次提交
    • D
      Introduce a new event emitted when a virtualization failure occurs · a6135ec1
      Daniel P. Berrange 提交于
      This introduces a new domain
      
        VIR_DOMAIN_EVENT_ID_CONTROL_ERROR
      
      Which uses the existing generic callback
      
      typedef void (*virConnectDomainEventGenericCallback)(virConnectPtr conn,
                                                           virDomainPtr dom,
                                                           void *opaque);
      
      This event is intended to be emitted when there is a failure in
      some part of the domain virtualization system. Whether the domain
      continues to run/exist after the failure is an implementation
      detail specific to the hypervisor.
      
      The idea is that with some types of failure, hypervisors may
      prefer to leave the domain running in a "degraded" mode of
      operation. For example, if something goes wrong with the QEMU
      monitor, it is possible to leave the guest OS running quite
      happily. The mgmt app will simply loose the ability todo various
      tasks. The mgmt app can then choose how/when to deal with the
      failure that occured.
      * daemon/remote.c: Dispatch of new event
      * examples/domain-events/events-c/event-test.c: Demo catch
        of event
      * include/libvirt/libvirt.h.in: Define event ID and callback
      * src/conf/domain_event.c, src/conf/domain_event.h: Internal
        event handling
      * src/remote/remote_driver.c: Receipt of new event from daemon
      * src/remote/remote_protocol.x: Wire protocol for new event
      * src/remote_protocol-structs: add new event for checks
      a6135ec1
  20. 28 5月, 2011 2 次提交
  21. 27 5月, 2011 1 次提交
    • K
      qemu : support persistent add/delete network interface · 9c26d6f0
      KAMEZAWA Hiroyuki 提交于
      This patch allows to modify interfaces of domain(qemu)
      * src/conf/domain_conf.c src/conf/domain_conf.h src/libvirt_private.syms:
        (virDomainNetInsert)     : Insert a network device to domain definition.
        (virDomainNetIndexByMac) : Returns an index of net device in array.
        (virDomainNetRemoveByMac): Remove a NIC of passed MAC address.
      * src/qemu/qemu_driver.c
        (qemuDomainAttachDeviceConfig): add codes for NIC.
        (qemuDomainDetachDeviceConfig): add codes for NIC.
      9c26d6f0
  22. 26 5月, 2011 1 次提交
  23. 24 5月, 2011 2 次提交
    • A
      spice: support streaming-video parameter · bb1c5423
      Alon Levy 提交于
      This adds a streaming-video=filter|all|off attribute. It is used to change
      the behavior of video stream detection in spice, the default is filter (the
      default for libvirt is not to specify it - the actual default is defined in
      libspice-server.so).
      
      Usage:
      
          <graphics type='spice' autoport='yes'>
            <streaming mode='off'/>
          </graphics>
      
      Tested with the above and with tests/qemuxml2argvtest.
      Signed-off-by: NAlon Levy <alevy@redhat.com>
      bb1c5423
    • S
      nwfilter: enable filtering of gratuitous ARP packets · fcb0e8c2
      Stefan Berger 提交于
      This patch enables filtering of gratuitous ARP packets using the following XML:
      
      <rule action='accept' direction='in' priority='425'>
      <arp gratuitous='true'/>
      </rule>
      fcb0e8c2