1. 31 5月, 2011 2 次提交
    • 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
  2. 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
  3. 28 5月, 2011 2 次提交
  4. 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
  5. 26 5月, 2011 1 次提交
  6. 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
  7. 19 5月, 2011 1 次提交
    • D
      Blank out the 'listenAddr' parameter if empty string · 4bfe396e
      Daniel P. Berrange 提交于
      Some bogus apps are generating a VNC/SPICE/RFB listen attribute
      with no content. This then causes a failure with the graphics
      migration cookie parsing. Blank out the 'listenAddr' parameter
      after parsing domain XML if it is the empty string, so the host
      default takes over
      
      * src/qemu/qemu_migration.c: Blank out listenAddr parameter
        if empty
      4bfe396e
  8. 18 5月, 2011 1 次提交
  9. 16 5月, 2011 1 次提交
    • J
      Implement domain state reason · b046c55d
      Jiri Denemark 提交于
      Only in drivers which use virDomainObj, drivers that query hypervisor
      for domain status need to be updated separately in case their hypervisor
      supports this functionality.
      
      The reason is also saved into domain state XML so if a domain is not
      running (i.e., no state XML exists) the reason will be lost by libvirtd
      restart. I think this is an acceptable limitation.
      b046c55d
  10. 13 5月, 2011 5 次提交
    • C
      domain_event: Add common domain event queue/flush helpers · 227d67ca
      Cole Robinson 提交于
      The same code for queueing, flushing, and deregistering events exists
      in multiple drivers, which will soon use these common functions.
      
      v2:
          Adjust libvirt_private.syms
          isDispatching bool fixes
          NONNULL tagging
      
      v3:
          Add requireTimer parameter to virDomainEventStateNew
      227d67ca
    • C
      domain_event: Add virDomainEventState structure · aaf2b70b
      Cole Robinson 提交于
      This structure will be used to unify lots of duplicated event handling code
      across the state drivers.
      
      v2:
          Check for state == NULL in StateFree
          Add NONNULL tagging
          Use bool for isDispatching
      Signed-off-by: NCole Robinson <crobinso@redhat.com>
      aaf2b70b
    • C
      xml: Use virXMLParse* helpers everywhere · b9e51e56
      Cole Robinson 提交于
      virt-aa-helper isn't even compile tested since I don't have the setup for
      it.
      
      v2:
          virt-aa-helper fixes from Eric
      b9e51e56
    • C
      domain: Require <init> for container guests · 34639a3f
      Cole Robinson 提交于
      Use capabilities to allow a driver to register a default <init> if none
      is specified in the XML. Openvz was already open-coding this to be /sbin/init
      
      LXC currently falls over if no init is specified, so an explicit error is
      an improvement IMO.
      
      (Side note: I don't think we can set a default value for LXC. If we use
      /sbin/init but the user doesn't specify a separate root FS for their guest,
      the container will rerun the host's init which can be traumatic :). For
      virt-install I'm thinking of defaulting to /sbin/init if a root FS has
      been specified, otherwise require the user to manually specify <init>)
      34639a3f
    • C
      xml: Make sure virXpathNodeSet always sets an error · 0571c3af
      Cole Robinson 提交于
      And update callers to actually respect the error
      0571c3af
  11. 12 5月, 2011 1 次提交
    • E
      node_device: avoid null dereference on error · 98cd17bd
      Eric Blake 提交于
      If we plow on after udev_device_get_syspath fails, we will hit a NULL
      dereference.  Clang found one due to strdup later in udevSetParent,
      but in fact we hit a NULL dereference sooner because of the use of
      STREQ within virNodeDeviceFindBySysfsPath.
      
      * src/conf/node_device_conf.h (virNodeDeviceFindBySysfsPath): Mark
      path argument non-null.
      * src/node_device/node_device_udev.c (udevSetParent): Avoid null
      dereference.
      98cd17bd
  12. 07 5月, 2011 1 次提交
    • E
      maint: avoid comparisons to bool constants · f84fe150
      Eric Blake 提交于
      HACKING already mentions that comparisons against literal 'true'
      are unsafe; for consistency, also shorten comparisons against 'false'.
      
      * src/conf/domain_conf.c (virDomainNetDefParseXML): Simplify.
      * src/nwfilter/nwfilter_gentech_driver.c
      (virNWFilterDomainFWUpdateCB): Likewise.
      * tools/virsh.c (cmdVolDownload, vshCommandRun, vshPrintExtra):
      Likewise.
      f84fe150
  13. 06 5月, 2011 3 次提交
    • M
      Add warning message to XML definition files stored on disk · 5d09c314
      Michal Privoznik 提交于
      Users often edit XML file stored in configuration directory
      thinking of modifying a domain/network/pool/etc. Thus it is wise
      to let them know they are using the wrong way and give them hint.
      5d09c314
    • D
      Add field to virDomainObjPtr to track "tainting" · 79984650
      Daniel P. Berrange 提交于
      Some configuration setups for guests are allowed, but strongly
      discouraged and unsupportable in production systems. Introduce
      a concept of 'tainting' to virDomainObjPtr to allow such setups
      to be identified. Drivers can then log warnings at suitable
      times
      
      * src/conf/domain_conf.c, src/conf/domain_conf.h: Declare taint
        flags and add parsing/formatting of domain status XML
      79984650
    • E
      maint: rename virBufferVSprintf to virBufferAsprintf · 68ea80cf
      Eric Blake 提交于
      We already have virAsprintf, so picking a similar name helps for
      seeing a similar purpose.  Furthermore, the prefix V before printf
      generally implies 'va_list', even though this variant was '...', and
      the old name got in the way of adding a new va_list version.
      
      global rename performed with:
      
      $ git grep -l virBufferVSprintf \
        | xargs -L1 sed -i 's/virBufferVSprintf/virBufferAsprintf/g'
      
      then revert the changes in ChangeLog-old.
      68ea80cf
  14. 30 4月, 2011 1 次提交
  15. 28 4月, 2011 2 次提交
    • K
      libvirt/qemu - support persistent attach/detach disks · ab9102c2
      KAMEZAWA Hiroyuki 提交于
      Support changes of disks by MODIFY_CONFIG for qemu.
      
      This patch includes patches for qemu's disk to support
      virDomainAt(De)tachDeviceFlags with VIR_DOMAIN_DEVICE_MODIFY_CONFIG.
      
      Other devices can be added incrementally.
      Signed-off-by: NKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      
      * /src/conf/domain_conf.c
      (virDomainDiskIndexByName): returns array index of disk in vmdef.
      (virDomainDiskRemoveByName): removes a disk which has the name in vmdef.
      * src/qemu/qemu_driver.c
      (qemuDomainAttachDeviceConfig): add support for Disks.
      (qemuDomainDetachDeviceConfig): add support for Disks.
      ab9102c2
    • K
      libvirt/qemu - support persistent modification of devices · da1eba6b
      KAMEZAWA Hiroyuki 提交于
      This patch adds functions for modify domain's persistent definition.
      To do error recovery in easy way, we use a copy of vmdef and update it.
      
      The whole sequence will be:
      
        make a copy of domain definition.
      
        if (flags & MODIFY_CONFIG)
            update copied domain definition
        if (flags & MODIF_LIVE)
            do hotplug.
        if (no error)
            save copied one to the file and update cached definition.
        else
            discard copied definition.
      
      This patch is mixuture of Eric Blake's work and mine.
      From: Eric Blake <eblake@redhat.com>
      Signed-off-by: NKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      
      (virDomainObjCopyPersistentDef): make a copy of persistent vm definition
      (qemuDomainAttach/Detach/UpdateDeviceConfig) : callbacks. now empty
      (qemuDomainModifyDeviceFlags): add support for MODIFY_CONFIG and MODIFY_CURRENT
      da1eba6b
  16. 27 4月, 2011 1 次提交
  17. 26 4月, 2011 2 次提交
  18. 20 4月, 2011 1 次提交
  19. 17 4月, 2011 1 次提交
  20. 16 4月, 2011 1 次提交
    • E
      maint: use lighter-weight function for straight appends · dbe3bad9
      Eric Blake 提交于
      It costs quite a few processor cycles to go through printf parsing
      just to determine that we only meant to append.
      
      * src/xen/xend_internal.c (xend_op_ext): Consolidate multiple
      printfs into one.
      * src/qemu/qemu_command.c (qemuBuildWatchdogDevStr)
      (qemuBuildUSBInputDevStr, qemuBuildSoundDevStr)
      (qemuBuildSoundCodecStr, qemuBuildVideoDevStr): Likewise.
      (qemuBuildCpuArgStr, qemuBuildCommandLine): Prefer virBufferAdd
      over virBufferVsprintf for trivial appends.
      * src/phyp/phyp_driver.c (phypExec, phypUUIDTable_Push)
      (phypUUIDTable_Pull): Likewise.
      * src/conf/nwfilter_conf.c (macProtocolIDFormatter)
      (arpOpcodeFormatter, formatIPProtocolID, printStringItems)
      (virNWFilterPrintStateMatchFlags, virNWIPAddressFormat)
      (virNWFilterDefFormat): Likewise.
      * src/security/virt-aa-helper.c (main): Likewise.
      * src/util/sexpr.c (sexpr2string): Likewise.
      * src/xenxs/xen_sxpr.c (xenFormatSxprChr): Likewise.
      * src/xenxs/xen_xm.c (xenFormatXMDisk): Likewise.
      dbe3bad9
  21. 15 4月, 2011 2 次提交
    • M
      Introduce virDomainChrDefNew() · 2ac455c4
      Michal Novotny 提交于
      Make: passed
      Make check: passed
      Make syntax-check: passed
      
      this is the commit to introduce the function to create new character
      device definition for the domain as advised by Cole Robinson
      <crobinso@redhat.com>.
      
      The function is used on the relevant places and also new tests has
      been added.
      Signed-off-by: NMichal Novotny <minovotn@redhat.com>
      2ac455c4
    • M
      Spice: support audio, images and stream compression · abb1570e
      Michal Privoznik 提交于
      This extends the SPICE XML to allow variable compression settings for audio,
      images and streaming:
          <graphics type='spice' port='5901' tlsPort='-1' autoport='yes'>
              <image compression='auto_glz'/>
              <jpeg compression='auto'/>
              <zlib compression='auto'/>
              <playback compression='on'/>
          </graphics>
      
      All new elements are optional.
      abb1570e
  22. 14 4月, 2011 1 次提交
  23. 08 4月, 2011 2 次提交
    • S
      nwfilters: support for TCP flags evaluation · 6ab24feb
      Stefan Berger 提交于
      This patch adds support for the evaluation of TCP flags in nwfilters.
      
      It adds documentation to the web page and extends the tests as well.
      Also, the nwfilter schema is extended.
      
      The following are some example for rules using the tcp flags:
      
      <rule action='accept' direction='in'>
          <tcp state='NONE' flags='SYN/ALL' dsptportstart='80'/>
      </rule>
      <rule action='drop' direction='in'>
          <tcp state='NONE' flags='SYN/ALL'/>
      </rule>
      6ab24feb
    • T
      setmem: add VIR_DOMAIN_MEM_CURRENT support to qemu · 95298e23
      Taku Izumi 提交于
      This patch adds virDomainSetMemoryFlags(,,VIR_DOMAIN_MEM_CURRENT) support
      code to qemu driver.
      
      Also, change virDomainObjIsActive to return bool, given its usage.
      Signed-off-by: NTaku Izumi <izumi.taku@jp.fujitsu.com>
      95298e23
  24. 05 4月, 2011 2 次提交
    • M
      Remove PATH_MAX sized stack allocations related to virFileBuildPath · 15731581
      Matthias Bolte 提交于
      Make virFileBuildPath operate on the heap instead of the stack. It
      allocates a buffer instead of expecting a preexisting buffer.
      15731581
    • E
      build: detect potentential uninitialized variables · 0d166c6b
      Eric Blake 提交于
      Even with -Wuninitialized (which is part of autobuild.sh
      --enable-compile-warnings=error), gcc does NOT catch this
      use of an uninitialized variable:
      
      {
        if (cond)
          goto error;
        int a = 1;
      error:
        printf("%d", a);
      }
      
      which prints 0 (supposing the stack started life wiped) if
      cond was true.  Clang will catch it, but we don't use clang
      as often.  Using gcc -Wjump-misses-init catches it, but also
      gives false positives:
      
      {
        if (cond)
          goto error;
        int a = 1;
        return a;
      error:
        return 0;
      }
      
      Here, a was never used in the scope of the error block, so
      declaring it after goto is technically fine (and clang agrees).
      However, given that our HACKING already documents a preference
      to C89 decl-before-statement, the false positive warning is
      enough of a prod to comply with HACKING.
      
      [Personally, I'd _really_ rather use C99 decl-after-statement
      to minimize scope, but until gcc can efficiently and reliably
      catch scoping and uninitialized usage bugs, I'll settle with
      the compromise of enforcing a coding standard that happens to
      reject false positives if it can also detect real bugs.]
      
      * acinclude.m4 (LIBVIRT_COMPILE_WARNINGS): Add -Wjump-misses-init.
      * src/util/util.c (__virExec): Adjust offenders.
      * src/conf/domain_conf.c (virDomainTimerDefParseXML): Likewise.
      * src/remote/remote_driver.c (doRemoteOpen): Likewise.
      * src/phyp/phyp_driver.c (phypGetLparNAME, phypGetLparProfile)
      (phypGetVIOSFreeSCSIAdapter, phypVolumeGetKey)
      (phypGetStoragePoolDevice)
      (phypVolumeGetPhysicalVolumeByStoragePool)
      (phypVolumeGetPath): Likewise.
      * src/vbox/vbox_tmpl.c (vboxNetworkUndefineDestroy)
      (vboxNetworkCreate, vboxNetworkDumpXML)
      (vboxNetworkDefineCreateXML): Likewise.
      * src/xenapi/xenapi_driver.c (getCapsObject)
      (xenapiDomainDumpXML): Likewise.
      * src/xenapi/xenapi_utils.c (createVMRecordFromXml): Likewise.
      * src/security/security_selinux.c (SELinuxGenNewContext):
      Likewise.
      * src/qemu/qemu_command.c (qemuBuildCommandLine): Likewise.
      * src/qemu/qemu_hotplug.c (qemuDomainChangeEjectableMedia):
      Likewise.
      * src/qemu/qemu_process.c (qemuProcessWaitForMonitor): Likewise.
      * src/qemu/qemu_monitor_text.c (qemuMonitorTextGetPtyPaths):
      Likewise.
      * src/qemu/qemu_driver.c (qemudDomainShutdown)
      (qemudDomainBlockStats, qemudDomainMemoryPeek): Likewise.
      * src/storage/storage_backend_iscsi.c
      (virStorageBackendCreateIfaceIQN): Likewise.
      * src/node_device/node_device_udev.c (udevProcessPCI): Likewise.
      0d166c6b
  25. 29 3月, 2011 2 次提交
    • O
      cputune: Implementations of parsing and formating cputune xml · b8853925
      Osier Yang 提交于
      Implementations of following functions:
        virDomainVcpupinIsDuplicate
        virDomainVcpupinFindByVcpu
        virDomainVcpupinAdd
      
      Update "virDomainDefParseXML" to parse, and "virDomainDefFormatXML"
      to build cputune xml, also implementations of new internal helper
      functions.
      
      v1 - v2:
        * Resolve potential crash bug of "virDomainVcpupinAdd"
      b8853925
    • O
      cputune: Add data structures presenting cputune XML · 853f0fdf
      Osier Yang 提交于
      Also related new functions' declaration, and expose the new introduced
      functions in libvirt_private.syms.
      
      v1 - v2:
        Don't expose "virAllocVar" in libvirt_private.syms
      853f0fdf