1. 18 12月, 2009 4 次提交
    • 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
  2. 16 12月, 2009 10 次提交
  3. 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
  4. 14 12月, 2009 19 次提交
    • 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
    • L
      Eliminate failure to delete empty storage pools · 22f3ec27
      Laine Stump 提交于
      * src/storage/storage_backend_fs.c: virStorageBackendFileSystemDelete
        was incorrectly calling unlink() in an attempt to remove a directory.
        It should be calling rmdir() instead.
      22f3ec27
    • J
      Fix use of virEventAddHandleImpl() · a645c8f0
      Jiri Denemark 提交于
      src/node_device/node_device_udev.c was using a function available only
      on the daemon code, fix this and use the function available globally
      
      * src/node_device/node_device_udev.c: replace use of virEventAddHandleImpl
        by virEventAddHandle
      a645c8f0
    • M
      Cleanup temporary #define after use · 057ad3a2
      Matthew Booth 提交于
      * src/qemu/qemu_driver.c: #undef LOOKUP_PTYS after use in
        qemudFindCharDevicePTYsMonitor()
      057ad3a2
    • D
      Implement --pool option for virsh vol-path · 94d599ec
      Dave Allan 提交于
      This patch fixes the problem reported in:
      
      https://bugzilla.redhat.com/show_bug.cgi?id=509306
      
      The bug reporter says that vol-delete does not support the --pool
      option, but that's not the case in the current head.  This patch makes
      vol-path behave the same way as vol-delete
      
      * tools/virsh.c: Modified vol-path to use the same logic as vol-delete,
        allowing the syntax: virsh vol-path --pool testdirpool testvol0
      94d599ec
    • C
      nodedev: Add removable storage 'media_label' prop · deae2bb5
      Cole Robinson 提交于
      Provides the CDROM label for current media. Only implemented for the
      udev backend.
      deae2bb5
    • D
      expose SR IOV physical/virtual function relationships · a010165d
      Dave Allan 提交于
      exposes the relationships between physical
      and virtual functions on SR IOV capable devices.
      a010165d
    • P
      Fix possible NULL pointer dereference · 921d2225
      Paolo Bonzini 提交于
      If there are no references remaining to the object, vm is set to NULL
      and vm->persistent cannot be accessed.  Fixed by this trivial patch.
      
      * src/qemu/qemu_driver.c (qemudDomainCoreDump): Avoid possible
        NULL pointer dereference on --crash dump.
      921d2225
    • J
      add AppArmor test and examples to dist · ad905a19
      Jamie Strandboge 提交于
      tests/virt-aa-helper-test and examples/apparmor are not included in
      official tarballs, but should be. Attached is a patch to fix that
      which works when apparmor is and is not available.
      ad905a19
    • P
      add --live support to "virsh dump" · 1fb7af40
      Paolo Bonzini 提交于
      This is trivial for QEMU since you just have to not stop the vm before
      starting the dump.  And for Xen, you just pass the flag down to xend.
      
      * include/libvirt/libvirt.h.in (virDomainCoreDumpFlags): Add VIR_DUMP_LIVE.
      * src/qemu/qemu_driver.c (qemudDomainCoreDump): Support live dumping.
      * src/xen/xend_internal.c (xenDaemonDomainCoreDump): Support live dumping.
      * tools/virsh.c (opts_dump): Add --live. (cmdDump): Map it to VIR_DUMP_LIVE.
      1fb7af40
    • P
      add --crash support to "virsh dump" · b927aed8
      Paolo Bonzini 提交于
      This patch adds the --crash option (already present in "xm dump-core")
      to "virsh dump".  virDomainCoreDump already has a flags argument, so
      the API/ABI is untouched.
      
      * include/libvirt/libvirt.h.in (virDomainCoreDumpFlags): New flag for
        CoreDump
      * src/test/test_driver.c (testDomainCoreDump): Do not crash
        after dump unless VIR_DUMP_CRASH is given.
      * src/qemu/qemu_driver.c (qemudDomainCoreDump): Shutdown the domain
        instead of restarting it if --crash is passed.
      * src/xen/xend_internal.c (xenDaemonDomainCoreDump): Support --crash.
      * tools/virsh.c (opts_dump): Add --crash.
        (cmdDump): Map it to flags for virDomainCoreDump and pass them.
      b927aed8
    • P
      fix various breakages in qemu Dump command · f509e162
      Paolo Bonzini 提交于
      1) qemuMigrateToCommand uses ">>" so we have to truncate the file
      before starting the migration;
      
      2) the command wasn't updated to chown the driver and set/restore
      the security lavels;
      
      3) the VM does not have to be resumed if migration fails;
      
      4) the file is not removed when migration fails.
      
      * src/qemu/qemu_driver.c (qemuDomainCoreDump): Truncate file before
        dumping, set/restore ownership and security labels for the file.
      f509e162
    • D
      Fix a couple of problems in last patch · a7d1eb3c
      Daniel Veillard 提交于
      Those were pointed by DanB in his review but not yet fixed
      
      * src/qemu/qemu_driver.c: qemudWaitForMonitor() use EnterMonitorWithDriver()
        and ExitMonitorWithDriver() there
      * src/qemu/qemu_monitor_text.c: checking fro strdu failure and hash
        table add error in qemuMonitorTextGetPtyPaths()
      a7d1eb3c
    • M
      Get QEMU pty paths from the monitor · 60e8977f
      Matthew Booth 提交于
      This change makes the QEMU driver get pty paths from the output of the
      monitor 'info chardev' command. This output is structured, and contains
      both the name of the device and the path on the same line. This is
      considerably more reliable than parsing the startup log output, which
      requires the parsing code to know which order QEMU will print pty
      information in.
      
      Note that we still need to parse the log output as the monitor itself
      may be on a pty. This should be rare, however, and the new code will
      replace all pty paths parsed by the log output method once the monitor
      is available.
      
      * src/qemu/qemu_monitor.(c|h) src/qemu_monitor_text.(c|h): Implement
        qemuMonitorGetPtyPaths().
      * src/qemu/qemu_driver.c: Get pty path information using
        qemuMonitorGetPtyPaths().
      60e8977f
    • M
      Extract the assigned pty device for QEmu channels · 033eef43
      Matthew Booth 提交于
      * src/qemu/qemu_driver.c: Parse pty devices for channels
      033eef43