1. 19 12月, 2009 4 次提交
    • M
      esx: Add automatic question handling · f66d5745
      Matthias Bolte 提交于
      Questions can block tasks, to handle them automatically the driver can answers
      them with the default answer. The auto_answer query parameter allows to enable
      this automatic question handling.
      
      * src/esx/README: add a detailed explanation for automatic question handling
      * src/esx/esx_driver.c: add automatic question handling for all task related
        driver functions
      * src/esx/esx_util.[ch]: add handling for the auto_answer query parameter
      * src/esx/esx_vi.[ch], src/esx/esx_vi_methods.[ch], src/esx/esx_vi_types.[ch]:
        add new VI API methods and types and additional helper functions for
        automatic question handling
      f66d5745
    • M
      Fix compilation with gcrypt < 1.4.2 · 1c5c6333
      Matthias Bolte 提交于
      Commit 33a198c1 increased the gcrypt
      version requirement to 1.4.2 because the GCRY_THREAD_OPTION_VERSION
      define was added in this version.
      
      The configure script doesn't check for the gcrypt version. To support
      gcrypt versions < 1.4.2 change the virTLSThreadImpl initialization
      to use GCRY_THREAD_OPTION_VERSION only if it's defined.
      1c5c6333
    • D
      Don't mix LDFLAGS and LIBS in the configure script · 1a43d0b2
      Diego Elio Pettenò 提交于
      * configure.in: If you pass libraries in the LDFLAGS variable, and then
        try AC_CHECK_FUNCS to find whether a function is present or not,
        it'll fail badly when using the --as-needed linker flag. Instead,
        pass the libraries through the LIBS library, so that they are passed
        after the conftest.c source file and the tests are done properly.
      1a43d0b2
    • D
      Don't make it possible to define HAVE_HAL but not enable it in automake · 3a524a2b
      Diego Elio Pettenò 提交于
      * configure.in: With the previous logic, if libhal_get_all_devices
        function was not found, HAVE_HAL would be defined for the preprocessor
        but it wouldn't be enabled in automake conditionals, causing the final
        link to fail with missing references to HAL entries.
      3a524a2b
  2. 18 12月, 2009 14 次提交
    • J
      Implement virsh command 'cpu-compare' · 3b734b78
      Jiri Denemark 提交于
      * tools/virsh.c: provide a way to us teh new API with virsh
      3b734b78
    • J
      Implement CPU selection in QEMU driver · ffb13b11
      Jiri Denemark 提交于
      * src/qemu/qemu_conf.c src/qemu/qemu_conf.h src/qemu/qemu_driver.c:
        add the new entry point, extend capabilities and code to interract
        with qemu
      ffb13b11
    • J
      Adds CPU map for models and features · d5ef0a69
      Jiri Denemark 提交于
      * src/cpu/cpu_map.xml: newdescription file
      * src/Makefile.am: include it in dist
      d5ef0a69
    • J
      Adds CPU selection infrastructure · 7286882c
      Jiri Denemark 提交于
      Each driver supporting CPU selection must fill in host CPU capabilities.
      When filling them, drivers for hypervisors running on the same node as
      libvirtd can use cpuNodeData() to obtain raw CPU data. Other drivers,
      such as VMware, need to implement their own way of getting such data.
      Raw data can be decoded into virCPUDefPtr using cpuDecode() function.
      
      When implementing virConnectCompareCPU(), a hypervisor driver can just
      call cpuCompareXML() function with host CPU capabilities.
      
      For each guest for which a driver supports selecting CPU models, it must
      set the appropriate feature in guest's capabilities:
      
          virCapabilitiesAddGuestFeature(guest, "cpuselection", 1, 0)
      
      Actions needed when a domain is being created depend on whether the
      hypervisor understands raw CPU data (currently CPUID for i686, x86_64
      architectures) or symbolic names has to be used.
      
      Typical use by hypervisors which prefer CPUID (such as VMware and Xen):
      
      - convert guest CPU configuration from domain's XML into a set of raw
        data structures each representing one of the feature policies:
      
          cpuEncode(conn, architecture, guest_cpu_config,
                    &forced_data, &required_data, &optional_data,
                    &disabled_data, &forbidden_data)
      
      - create a mask or whatever the hypervisor expects to see and pass it
        to the hypervisor
      
      Typical use by hypervisors with symbolic model names (such as QEMU):
      
      - get raw CPU data for a computed guest CPU:
      
          cpuGuestData(conn, host_cpu, guest_cpu_config, &data)
      
      - decode raw data into virCPUDefPtr with a possible restriction on
        allowed model names:
      
          cpuDecode(conn, guest, data, n_allowed_models, allowed_models)
      
      - pass guest->model and guest->features to the hypervisor
      
      * src/cpu/cpu.c src/cpu/cpu.h src/cpu/cpu_generic.c
        src/cpu/cpu_generic.h src/cpu/cpu_map.c src/cpu/cpu_map.h
        src/cpu/cpu_x86.c src/cpu/cpu_x86.h src/cpu/cpu_x86_data.h
      * configure.in: check for CPUID instruction
      * src/Makefile.am: glue the new files in
      * src/libvirt_private.syms: add new private symbols
      * po/POTFILES.in: add new cpu files containing translatable strings
      7286882c
    • J
      Remote driver CPU flags support · e1042693
      Jiri Denemark 提交于
      * src/remote/remote_driver.c: add the new entry point
      e1042693
    • J
      CPU flags wire protocol format and server side · 3a2881fa
      Jiri Denemark 提交于
      * src/remote/remote_protocol.x: update with new entry point
      * daemon/remote.c: add the new server dispatcher
      * daemon/remote_dispatch_args.h daemon/remote_dispatch_prototypes.h
        daemon/remote_dispatch_ret.h daemon/remote_dispatch_table.h
        src/remote/remote_protocol.c src/remote/remote_protocol.h: regenerated
      3a2881fa
    • J
      Public API implementation · 0b7d2ae6
      Jiri Denemark 提交于
      * src/libvirt.c: adds the public entry point virConnectCompareCPU()
      0b7d2ae6
    • J
      Adds the internal driver API · 16e4084a
      Jiri Denemark 提交于
      * src/driver.h: add an extra entry point in the structure
      * 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/qemu/qemu_driver.c
        src/remote/remote_driver.c src/test/test_driver.c src/uml/uml_driver.c
        src/vbox/vbox_tmpl.c src/xen/xen_driver.c: add NULL entry points for
        all drivers
      16e4084a
    • J
      New public API definition virConnectCompareCPU() · a44dc266
      Jiri Denemark 提交于
      * include/libvirt/libvirt.h.in: add it in the public API as
        well as the new flags
      * src/libvirt_public.syms: export it
      a44dc266
    • D
      Fixes syntax-check with previous commit · c7c42a85
      Daniel Veillard 提交于
      * po/POTFILES.in: adds src/conf/cpu_conf.c in teh set of files with
        translatable content
      * src/conf/cpu_conf.c: remove an unused include
      c7c42a85
    • J
      XML parsing/formating code for CPU flags · 6695818c
      Jiri Denemark 提交于
      * include/libvirt/virterror.h src/util/virterror.c: add new domain
        VIR_FROM_CPU for errors
      * src/conf/cpu_conf.c src/conf/cpu_conf.h: new parsing module
      * src/Makefile.am proxy/Makefile.am: include new files
      * src/conf/capabilities.[ch] src/conf/domain_conf.[ch]: reference
        new code
      * src/libvirt_private.syms: private export of new entry points
      6695818c
    • J
      XML schema for CPU flags · 6df8b363
      Jiri Denemark 提交于
      XML schema for CPU flags
      
      Firstly, CPU topology and model with optional features have to be
      advertised in host capabilities:
      
          <host>
              <cpu>
                  <arch>ARCHITECTURE</arch>
                  <features>
                      <!-- old-style features are here -->
                  </features>
                  <model>NAME</model>
                  <topology sockets="S" cores="C" threads="T"/>
                  <feature name="NAME"/>
              </cpu>
              ...
          </host>
      
      Secondly, drivers which support detailed CPU specification have to
      advertise
      it in guest capabilities:
      
          <guest>
          ...
          <features>
                  <cpuselection/>
              </features>
          </guest>
      
      And finally, CPU may be configured in domain XML configuration:
      
      <domain>
          ...
          <cpu match="MATCH">
              <model>NAME</model>
              <topology sockets="S" cores="C" threads="T"/>
              <feature policy="POLICY" name="NAME"/>
          </cpu>
      </domain>
      
      Where MATCH can be one of:
          - 'minimum'     specified CPU is the minimum requested CPU
          - 'exact'       disable all additional features provided by host CPU
          - 'strict'      fail if host CPU doesn't exactly match
      
      POLICY can be one of:
          - 'force'       turn on the feature, even if host doesn't have it
          - 'require'     fail if host doesn't have the feature
          - 'optional'    match host
          - 'disable'     turn off the feature, even if host has it
          - 'forbid'      fail if host has the feature
      
      'force' and 'disable' policies turn on/off the feature regardless of its
      availability on host. 'force' is unlikely to be used but its there for
      completeness since Xen and VMWare allow it.
      
      'require' and 'forbid' policies prevent a guest from being started on a host
      which doesn't/does have the feature. 'forbid' is for cases where you disable
      the feature but a guest may still try to access it anyway and you don't want
      it to succeed.
      
      'optional' policy sets the feature according to its availability on host.
      When a guest is booted on a host that has the feature and then migrated to
      another host, the policy changes to 'require' as we can't take the feature
      away from a running guest.
      
      Default policy for features provided by host CPU but not specified in domain
      configuration is set using match attribute of cpu tag. If 'minimum' match is
      requested, additional features will be treated as if they were specified
      with 'optional' policy. 'exact' match implies 'disable' policy and 'strict'
      match stands for 'forbid' policy.
      
      * docs/schemas/capability.rng docs/schemas/domain.rng: extend the
        RelaxNG schemas to add CPU flags support
      6df8b363
    • D
      Initialize gcrypt threading · 33a198c1
      Daniel P. Berrange 提交于
      GNUTLS uses gcrypt for its crypto functions. gcrypt requires
      that the app/library initializes threading before using it.
      We don't want to force apps using libvirt to know about
      gcrypt, so we make virInitialize init threading on their
      behalf. This location also ensures libvirtd has initialized
      it correctly. This initialization is required even if libvirt
      itself were only using one thread, since another non-libvirt
      library (eg GTK-VNC) could also be using gcrypt from another
      thread
      
      * src/libvirt.c: Register thread functions for gcrypt
      * configure.in: Add -lgcrypt to linker flags
      33a198c1
    • D
      Fix bug in storage driver accessing wrong private data · 84961bd3
      Daniel P. Berrange 提交于
      * src/storage/storage_driver.c: Fix IsPersistent() and IsActivE()
        methods on storage pools to use 'storagePrivateData' instead
        of 'privateData'. Also fix naming convention of objects
      84961bd3
  3. 16 12月, 2009 10 次提交
  4. 15 12月, 2009 7 次提交
    • J
      qemu migration: avoid NULL-deref given an invalid input · 643ee3fa
      Jim Meyering 提交于
      * src/qemu/qemu_driver.c (doNonTunnelMigrate): Don't let a
      NULL "uri_out" provoke a NULL-dereference in doNativeMigrate:
      supply omitted goto-after-qemudReportError.
      643ee3fa
    • J
      qemu_driver.c: don't unlink(NULL) on OOM error path · 1428704d
      Jim Meyering 提交于
      * src/qemu/qemu_driver.c (qemudDomainMigratePrepareTunnel): Upon an
      out of memory error, we would end up with unixfile==NULL and attempt
      to unlink(NULL).  Skip the unlink when it's NULL.
      1428704d
    • J
      remote_driver.c: also zero out ->saslDecodedOffset member · 49226d2c
      Jim Meyering 提交于
      * src/remote/remote_driver.c (remoteIOReadMessage): ...rather than
      zeroing out priv->saslDecodedLength twice.
      49226d2c
    • J
      qemu_driver.c: avoid double free on error path · dd160450
      Jim Meyering 提交于
      * src/qemu/qemu_driver.c (qemudDomainMigrateFinish2): Set
      "event" to NULL after qemuDomainEventQueue frees it, so a
      subsequent free (after endjob label) upon qemuMonitorStartCPUs
      failure does not cause a double free.
      dd160450
    • J
      libvirtd: avoid a NULL dereference on error path · 63a499d3
      Jim Meyering 提交于
      * daemon/libvirtd.c (qemudDispatchServer): Since "client" may be
      NULL in the "cleanup:" block, free client->rx only when it's not.
      63a499d3
    • M
      Fix and improve domain xml video element description · 52a18abd
      Matthias Bolte 提交于
      The description mismatched the actual structure since the video element
      was introduced. The nvram attribute is actually called vram. Specify the
      unit of the vram attribute.
      52a18abd
    • M
      Fix install location for Python bindings · d0857c01
      Matthias Bolte 提交于
      Commit 66137344 changed the Python detection
      mechanism in configure to use AM_PATH_PYTHON. This results in a changed
      install location for the Python bindings, at least on Fedora 12 64bit systems.
      
      Before this commit libvirt.py and libvirtmod.so were installed to
      
        /usr/lib64/python2.6/site-packages
      
      After this commit they are installed to
      
        /usr/lib/python2.6/site-packages
      
      Mixed Python packages (containing *.py and *.so files) should be installed to
      the pyexecdir directory detected by AM_PATH_PYTHON.
      
      This restores the install location from before the AM_PATH_PYTHON commit.
      
      * configure.in: remove unnecessary pythondir export
      * python/Makefile.am: switch from pythondir to pyexecdir
      d0857c01
  5. 14 12月, 2009 5 次提交
    • D
      Relax the allowed values for machine type in schema · 803d3204
      Daniel Veillard 提交于
      * docs/schemas/domain.rng: don't try to validate based on a list, open
        up the machine type to a regexp allowing a-z A-Z 0-9 _ - and .
      803d3204
    • J
      virsh: avoid double-free · 21a2eba4
      Jim Meyering 提交于
      * tools/virsh.c (vshCommandParse): Avoid double-free of "tkdata".
      Set it to NULL immediately after free in the (cmd == NULL) case,
      just as in the other case, in case the final free(tkdata) is
      triggered by a syntax error.
      21a2eba4
    • J
      node_device_driver.c: don't write beyond EOB for 4K-byte symlink · b1483189
      Jim Meyering 提交于
      * src/node_device/node_device_driver.c (update_driver_name): The
      previous code would write one byte beyond the end of the 4KiB
      stack buffer when presented with a symlink value of exactly that
      length (very unlikely).  Remove the automatic buffer and use
      virFileResolveLink in place of readlink.  Suggested by Daniel Veillard.
      b1483189
    • M
      Fix owner and group in example volume XML · 042956d5
      Matthew Booth 提交于
      The owner and group in the documentation examples were confusingly given as
      '0744'. They should be numeric uid and gid. Changed the examples to use the
      default uid and gid assigned to qemu in F12.
      
      * docs/formatstorage.html.in: Change example owner and group in volume XML
      042956d5
    • D
      add missing doc for device <shareable/> option · 2aec15bc
      Daniel Veillard 提交于
      2aec15bc