1. 23 7月, 2012 1 次提交
    • O
      Desert the FSF address in copyright · f9ce7dad
      Osier Yang 提交于
      Per the FSF address could be changed from time to time, and GNU
      recommends the following now: (http://www.gnu.org/licenses/gpl-howto.html)
      
        You should have received a copy of the GNU General Public License
        along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
      
      This patch removes the explicit FSF address, and uses above instead
      (of course, with inserting 'Lesser' before 'General').
      
      Except a bunch of files for security driver, all others are changed
      automatically, the copyright for securify files are not complete,
      that's why to do it manually:
      
        src/security/security_selinux.h
        src/security/security_driver.h
        src/security/security_selinux.c
        src/security/security_apparmor.h
        src/security/security_apparmor.c
        src/security/security_driver.c
      f9ce7dad
  2. 19 7月, 2012 2 次提交
  3. 14 7月, 2012 1 次提交
    • D
      Wire up handling for QMP's BALLOON_EVENT · 1d9d5103
      Daniel P. Berrange 提交于
      If QEMU supports the BALLOON_EVENT QMP event, then we can
      avoid invoking 'query-balloon' when returning XML or the
      domain info.
      
      * src/qemu/qemu_capabilities.c, src/qemu/qemu_capabilities.h:
        Add QEMU_CAPS_BALLOON_EVENT
      * src/qemu/qemu_driver.c: Skip query-balloon in
        qemudDomainGetInfo and qemuDomainGetXMLDesc if we have
        QEMU_CAPS_BALLOON_EVENT set
      * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h: Check
        for BALLOON_EVENT at connect to monitor. Add callback
        for balloon change notifications
      * src/qemu/qemu_monitor_json.c, src/qemu/qemu_monitor_json.h:
        Add handling of BALLOON_EVENT and impl 'query-events'
        check
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      1d9d5103
  4. 15 6月, 2012 1 次提交
    • W
      qemu: implement qemu's dump-guest-memory · 6fe26d89
      Wen Congyang 提交于
      dump-guest-memory is a new dump mechanism, and it can work when the
      guest uses host devices. This patch adds a API to use this new
      monitor command.
      We will always use json mode if qemu's version is >= 0.15, so I
      don't implement the API for text mode.
      6fe26d89
  5. 14 6月, 2012 1 次提交
    • P
      qemu: Fix off-by-one error while unescaping monitor strings · 0f4660c8
      Peter Krempa 提交于
      While unescaping the commands the commands passed through to the monitor
      function qemuMonitorUnescapeArg() initialized lenght of the input string
      to strlen()+1 which is fine for alloc but not for iteration of the
      string.
      
      This patch fixes the off-by-one error and drops the pointless check for
      a single trailing slash that is automaticaly handled by the default
      branch of switch.
      0f4660c8
  6. 24 5月, 2012 1 次提交
    • D
      Split QEMU dtrace probes into separate file · a4e45a06
      Daniel P. Berrange 提交于
      When building as driver modules, it is not possible for the QEMU
      driver module to reference the DTrace/SystemTAP probes linked into
      the main libvirt.so. Thus we need to move the QEMU probes into a
      separate file 'libvirt_qemu_probes.d'. Also rename the existing
      file from 'probes.d' to 'libvirt_probes.d' while we're at it
      
      * daemon/Makefile.am, src/internal.h: Include libvirt_probes.h
        instead of probes.h
      * src/Makefile.am: Add rules for libvirt_qemu_probes.d
      * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor_json.c,
        src/qemu/qemu_monitor_text.c: Include libvirt_qemu_probes.h
      * src/libvirt_probes.d: Rename from probes.d
      * src/libvirt_qemu_probes.d: QEMU specific probes formerly
        in probes.d
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      a4e45a06
  7. 14 5月, 2012 1 次提交
    • E
      build: really silence the 32-bit warning · 5f89c860
      Eric Blake 提交于
      Commit cdce2f42 tried to silence a compiler warning on 32-bit builds,
      but the gcc shipped with RHEL 5 is old enough that the type conversion
      via multiplication by 1 was insufficient for the task.
      
      * src/qemu/qemu_monitor.c (qemuMonitorBlockJob): Previous attempt
      didn't get past all gcc versions.
      5f89c860
  8. 04 5月, 2012 1 次提交
    • E
      qemu: avoid 32-bit compiler warning · cdce2f42
      Eric Blake 提交于
      On 32-bit platforms, gcc warns that the comparison between a long
      and (ULLONG_MAX/1024/1024) is always false; throwing in a type
      conversion shuts up the warning.
      
      * src/qemu/qemu_monitor.c (qemuMonitorBlockJob): Shut gcc up.
      cdce2f42
  9. 28 4月, 2012 1 次提交
    • E
      blockjob: fix block-stream bandwidth race · 2eabac00
      Eric Blake 提交于
      With RHEL 6.2, virDomainBlockPull(dom, dev, bandwidth, 0) has a race
      with non-zero bandwidth: there is a window between the block_stream
      and block_job_set_speed monitor commands where an unlimited amount
      of data was let through, defeating the point of a throttle.
      
      This race was first identified in commit a9d3495e, and libvirt was
      able to reduce the size of the window for that race.  In the meantime,
      the qemu developers decided to fix things properly; per this message:
      https://lists.gnu.org/archive/html/qemu-devel/2012-04/msg03793.html
      the fix will be in qemu 1.1, and changes block-job-set-speed to use
      a different parameter name, as well as adding a new optional parameter
      to block-stream, which eliminates the race altogether.
      
      Since our documentation already mentioned that we can refuse a non-zero
      bandwidth for some hypervisors, I think the best solution is to do
      just that for RHEL 6.2 qemu, so that the race is obvious to the user
      (anyone using stock RHEL 6.2 binaries won't have this patch, and anyone
      building their own libvirt with this patch for RHEL can also rebuild
      qemu to get the modern semantics, so it is no real loss in behavior).
      
      Meanwhile the code must be fixed to honor actual qemu 1.1 naming.
      Rename the parameter to 'modern', since the naming difference now
      covers more than just 'async' block-job-cancel.  And while at it,
      fix an unchecked integer overflow.
      
      * src/qemu/qemu_monitor.h (enum BLOCK_JOB_CMD): Drop unused value,
      rename enum to match conventions.
      * src/qemu/qemu_monitor.c (qemuMonitorBlockJob): Reflect enum rename.
      * src/qemu_qemu_monitor_json.h (qemuMonitorJSONBlockJob): Likewise.
      * src/qemu/qemu_monitor_json.c (qemuMonitorJSONBlockJob): Likewise,
      and support difference between RHEL 6.2 and qemu 1.1 block pull.
      * src/qemu/qemu_driver.c (qemuDomainBlockJobImpl): Reject
      bandwidth during pull with too-old qemu.
      * src/libvirt.c (virDomainBlockPull, virDomainBlockRebase):
      Document this.
      2eabac00
  10. 18 4月, 2012 1 次提交
    • E
      qemu: use consistent error when qemu binary is too old · 6fb8a64d
      Eric Blake 提交于
      Most of our errors complaining about an inability to support a
      particular action due to qemu limitations used CONFIG_UNSUPPORTED,
      but we had a few outliers.  Reported by Jiri Denemark.
      
      * src/qemu/qemu_command.c (qemuBuildDriveDevStr): Prefer
      CONFIG_UNSUPPORTED.
      * src/qemu/qemu_driver.c (qemuDomainReboot)
      (qemuDomainBlockJobImpl): Likewise.
      * src/qemu/qemu_hotplug.c (qemuDomainAttachPciControllerDevice):
      Likewise.
      * src/qemu/qemu_monitor.c (qemuMonitorTransaction)
      (qemuMonitorBlockJob, qemuMonitorSystemWakeup): Likewise.
      6fb8a64d
  11. 12 4月, 2012 1 次提交
    • E
      blockjob: add qemu capabilities related to block pull jobs · 2b085f5b
      Eric Blake 提交于
      RHEL 6.2 was released with an early version of block jobs, which only
      worked on the qed file format, where the commands were spelled with
      underscore (contrary to QMP style), and where 'block_job_cancel' was
      synchronous and did not trigger an event.
      
      The upcoming qemu 1.1 release has fixed these short-comings [1][2]:
      the commands now work on multiple file types, are spelled with dash,
      and 'block-job-cancel' is asynchronous and emits an event upon conclusion.
      
      [1]qemu commit 370521a1d6f5537ea7271c119f3fbb7b0fa57063
      [2]https://lists.gnu.org/archive/html/qemu-devel/2012-04/msg01248.html
      
      This patch recognizes the new spellings, and fixes virDomainBlockRebase
      to give a graceful error when talking to a too-old qemu on a partial
      rebase attempt.  Fixes for the new semantics will come later.  This
      patch also removes a bogus ATTRIBUTE_NONNULL mistakenly added in
      commit 10ec36e2.
      
      * src/qemu/qemu_capabilities.h (QEMU_CAPS_BLOCKJOB_SYNC)
      (QEMU_CAPS_BLOCKJOB_ASYNC): New bits.
      * src/qemu/qemu_capabilities.c (qemuCaps): Name them.
      * src/qemu/qemu_monitor_json.c (qemuMonitorJSONCheckCommands): Set
      them.
      (qemuMonitorJSONBlockJob): Manage both command names.
      (qemuMonitorJSONDiskSnapshot): Minor formatting fix.
      * src/qemu/qemu_monitor.h (qemuMonitorBlockJob): Alter signature.
      * src/qemu/qemu_monitor_json.h (qemuMonitorJSONBlockJob): Likewise.
      * src/qemu/qemu_monitor.c (qemuMonitorBlockJob): Pass through
      capability bit.
      * src/qemu/qemu_driver.c (qemuDomainBlockJobImpl): Update callers.
      2b085f5b
  12. 24 3月, 2012 2 次提交
    • E
      snapshot: improve qemu handling of reused snapshot targets · d42a2ffc
      Eric Blake 提交于
      The oVirt developers have stated that the real reasons they want
      to have qemu reuse existing volumes when creating a snapshot are:
      1. the management framework is set up so that creation has to be
      done from a central node for proper resource tracking, and having
      libvirt and/or qemu create things violates the framework, and
      2. qemu defaults to creating snapshots with an absolute path to
      the backing file, but oVirt wants to manage a backing chain that
      uses just relative names, to allow for easier migration of a chain
      across storage locations.
      
      When 0.9.10 added VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT (commit
      4e9953a4), it only addressed point 1, but libvirt was still using
      O_TRUNC which violates point 2.  Meanwhile, the new qemu
      'transaction' monitor command includes a new optional mode argument
      that will force qemu to reuse the metadata of the file it just
      opened (with the burden on the caller to have valid metadata there
      in the first place).  So, this tweaks the meaning of the flag to
      cover both points as intended for use by oVirt.  It is not strictly
      backward-compatible to 0.9.10 behavior, but it can be argued that
      the O_TRUNC of 0.9.10 was a bug.
      
      Note that this flag is all-or-nothing, and only selects between
      'existing' and the default 'absolute-paths'.  A more flexible
      approach that would allow per-disk selections, as well as adding
      support for the 'no-backing-file' mode, would be possible by
      extending the <domainsnapshot> xml to have a per-disk mode, but
      until we have a management application expressing a need for that
      additional complexity, it is not worth doing.
      
      * src/libvirt.c (virDomainSnapshotCreateXML): Tweak documentation.
      * src/qemu/qemu_monitor.h (qemuMonitorDiskSnapshot): Add
      parameters.
      * src/qemu/qemu_monitor_json.h (qemuMonitorJSONDiskSnapshot):
      Likewise.
      * src/qemu/qemu_monitor.c (qemuMonitorDiskSnapshot): Pass them
      through.
      * src/qemu/qemu_monitor_json.c (qemuMonitorJSONDiskSnapshot): Use
      new monitor command arguments.
      * src/qemu/qemu_driver.c (qemuDomainSnapshotCreateDiskActive)
      (qemuDomainSnapshotCreateSingleDiskActive): Adjust callers.
      (qemuDomainSnapshotDiskPrepare): Allow qed, modify rules on reuse.
      d42a2ffc
    • E
      snapshot: add support for qemu transaction command · 64d5e815
      Eric Blake 提交于
      QEmu 1.1 is adding a 'transaction' command to the JSON monitor.
      Each element of a transaction corresponds to a top-level command,
      with the additional guarantee that the transaction flushes all
      pending I/O, then guarantees that all actions will be successful
      as a group or that failure will roll back the state to what it
      was before the monitor command.  The difference between a
      top-level command:
      
      { "execute": "blockdev-snapshot-sync", "arguments":
        { "device": "virtio0", ... } }
      
      and a transaction:
      
      { "execute": "transaction", "arguments":
        { "actions": [
          { "type": "blockdev-snapshot-sync", "data":
            { "device": "virtio0", ... } } ] } }
      
      is just a couple of changed key names and nesting the shorter
      command inside a JSON array to the longer command.  This patch
      just adds the framework; the next patch will actually use a
      transaction.
      
      * src/qemu/qemu_monitor_json.c (qemuMonitorJSONMakeCommand): Move
      guts...
      (qemuMonitorJSONMakeCommandRaw): ...into new helper.  Add support
      for array element.
      (qemuMonitorJSONTransaction): New command.
      (qemuMonitorJSONDiskSnapshot): Support use in a transaction.
      * src/qemu/qemu_monitor_json.h (qemuMonitorJSONDiskSnapshot): Add
      argument.
      (qemuMonitorJSONTransaction): New declaration.
      * src/qemu/qemu_monitor.h (qemuMonitorTransaction): Likewise.
      (qemuMonitorDiskSnapshot): Add argument.
      * src/qemu/qemu_monitor.c (qemuMonitorTransaction): New wrapper.
      (qemuMonitorDiskSnapshot): Pass argument on.
      * src/qemu/qemu_driver.c
      (qemuDomainSnapshotCreateSingleDiskActive): Update caller.
      64d5e815
  13. 23 3月, 2012 3 次提交
    • O
      Add support for the suspend event · 487c0633
      Osier Yang 提交于
      This patch introduces a new event type for the QMP event
      SUSPEND:
      
          VIR_DOMAIN_EVENT_ID_PMSUSPEND
      
      The event doesn't take any data, but considering there might
      be reason for wakeup in future, the callback definition is:
      
      typedef void
      (*virConnectDomainEventSuspendCallback)(virConnectPtr conn,
                                              virDomainPtr dom,
                                              int reason,
                                              void *opaque);
      
      "reason" is unused currently, always passes "0".
      487c0633
    • O
      Add support for the wakeup event · 57ddcc23
      Osier Yang 提交于
      This patch introduces a new event type for the QMP event
      WAKEUP:
      
          VIR_DOMAIN_EVENT_ID_PMWAKEUP
      
      The event doesn't take any data, but considering there might
      be reason for wakeup in future, the callback definition is:
      
      typedef void
      (*virConnectDomainEventWakeupCallback)(virConnectPtr conn,
                                             virDomainPtr dom,
                                             int reason,
                                             void *opaque);
      
      "reason" is unused currently, always passes "0".
      57ddcc23
    • O
      Add support for event tray moved of removable disks · a26a1969
      Osier Yang 提交于
      This patch introduces a new event type for the QMP event
      DEVICE_TRAY_MOVED, which occurs when the tray of a removable
      disk is moved (i.e opened or closed):
      
          VIR_DOMAIN_EVENT_ID_TRAY_CHANGE
      
      The event's data includes the device alias and the reason
      for tray status' changing, which indicates why the tray
      status was changed. Thus the callback definition for the event
      is:
      
      enum {
          VIR_DOMAIN_EVENT_TRAY_CHANGE_OPEN = 0,
          VIR_DOMAIN_EVENT_TRAY_CHANGE_CLOSE,
      
      \#ifdef VIR_ENUM_SENTINELS
          VIR_DOMAIN_EVENT_TRAY_CHANGE_LAST
      \#endif
      } virDomainEventTrayChangeReason;
      
      typedef void
      (*virConnectDomainEventTrayChangeCallback)(virConnectPtr conn,
                                                 virDomainPtr dom,
                                                 const char *devAlias,
                                                 int reason,
                                                 void *opaque);
      a26a1969
  14. 08 3月, 2012 1 次提交
    • E
      xml: use better types for memory values · 4888f0fb
      Eric Blake 提交于
      Using 'unsigned long' for memory values is risky on 32-bit platforms,
      as a PAE guest can have more than 4GiB memory.  Our API is
      (unfortunately) locked at 'unsigned long' and a scale of 1024, but
      the rest of our system should consistently use 64-bit values,
      especially since the previous patch centralized overflow checking.
      
      * src/conf/domain_conf.h (_virDomainDef): Always use 64-bit values
      for memory.  Change hugepage_backed to a bool.
      * src/conf/domain_conf.c (virDomainDefParseXML)
      (virDomainDefCheckABIStability, virDomainDefFormatInternal): Fix
      clients.
      * src/vmx/vmx.c (virVMXFormatConfig): Likewise.
      * src/xenxs/xen_sxpr.c (xenParseSxpr, xenFormatSxpr): Likewise.
      * src/xenxs/xen_xm.c (xenXMConfigGetULongLong): New function.
      (xenXMConfigGetULong, xenXMConfigSetInt): Avoid truncation.
      (xenParseXM, xenFormatXM): Fix clients.
      * src/phyp/phyp_driver.c (phypBuildLpar): Likewise.
      * src/openvz/openvz_driver.c (openvzDomainSetMemoryInternal):
      Likewise.
      * src/vbox/vbox_tmpl.c (vboxDomainDefineXML): Likewise.
      * src/qemu/qemu_command.c (qemuBuildCommandLine): Likewise.
      * src/qemu/qemu_process.c (qemuProcessStart): Likewise.
      * src/qemu/qemu_monitor.h (qemuMonitorGetBalloonInfo): Likewise.
      * src/qemu/qemu_monitor_text.h (qemuMonitorTextGetBalloonInfo):
      Likewise.
      * src/qemu/qemu_monitor_text.c (qemuMonitorTextGetBalloonInfo):
      Likewise.
      * src/qemu/qemu_monitor_json.h (qemuMonitorJSONGetBalloonInfo):
      Likewise.
      * src/qemu/qemu_monitor_json.c (qemuMonitorJSONGetBalloonInfo):
      Likewise.
      * src/qemu/qemu_driver.c (qemudDomainGetInfo)
      (qemuDomainGetXMLDesc): Likewise.
      * src/uml/uml_conf.c (umlBuildCommandLine): Likewise.
      4888f0fb
  15. 01 3月, 2012 2 次提交
    • E
      qemu: pass block pull backing file to monitor · 10ec36e2
      Eric Blake 提交于
      This actually wires up the new optional parameter to block_stream:
      http://wiki.qemu.org/Features/LiveBlockMigration/ImageStreamingAPI
      
      The error checking is still sparse, since libvirt must not use
      qemu-img or header probing on a qcow2 file in use by qemu to
      check if the backing file name is valid; so for now, libvirt is
      relying on qemu to diagnose an incorrect backing name.  Fixing this
      will require libvirt to track the entire backing file chain at the
      time qemu is started and keeps it updated with snapshot and pull
      operations.
      
      * src/qemu/qemu_monitor_json.c (qemuMonitorJSONBlockJob): Add
      parameter, and update callers.
      * src/qemu/qemu_monitor_json.h (qemuMonitorJSONBlockJob): Update
      signature.
      * src/qemu/qemu_monitor.h (qemuMonitorBlockJob): Likewise.
      * src/qemu/qemu_driver.c (qemuDomainBlockJobImpl): Update caller.
      * src/qemu/qemu_monitor.c (qemuMonitorBlockJob): Likewise.
      10ec36e2
    • E
      qemu: require json for block jobs · 68a13005
      Eric Blake 提交于
      Block job commands are not part of upstream qemu until 1.1; and
      proper support of job completion and cancellation depends on being
      able to receive QMP events, which implies the JSON monitor.
      Additionally, some early versions of block job commands were
      backported to RHEL qemu, but these versions lacked asynchronous
      job cancellation and partial block pull, so there are several
      patches that will still be needed in this area of libvirt code
      to support both flavors of block job commands.
      
      Due to earlier patches in libvirt, we are guaranteed that all versions
      of qemu that support block job commands already require libvirt to
      use the JSON monitor.  That means that the text version of block jobs
      will not be used, and having to refactor two copies of the block job
      handlers makes no sense.  So instead, we delete the text handlers.
      
      * src/qemu/qemu_monitor.c (qemuMonitorBlockJob): Drop text monitor
      support.
      * src/qemu/qemu_monitor_text.h (qemuMonitorTextBlockJob): Delete.
      * src/qemu/qemu_monitor_text.c (qemuMonitorTextParseBlockJobOne)
      (qemuMonitorTextParseBlockJob, qemuMonitorTextBlockJob):
      Likewise.
      68a13005
  16. 28 2月, 2012 1 次提交
    • J
      qemu: unescape HMP commands before converting them to json · f27f616f
      Josh Durgin 提交于
      QMP commands don't need to be escaped since converting them to json
      also escapes special characters. When a QMP command fails, however,
      libvirt falls back to HMP commands. These fallback functions
      (qemuMonitorText*) do their own escaping, and pass the result directly
      to qemuMonitorHMPCommandWithFd. If the monitor is in json mode, these
      pre-escaped commands will be escaped again when converted to json,
      which can result in the wrong arguments being sent.
      
      For example, a filename test\file would be sent in json as
      test\\file.
      
      This prevented attaching an image file with a " or \ in its name in
      qemu 1.0.50, and also broke rbd attachment (which uses backslashes to
      escape some internal arguments.)
      Reported-by: NMasuko Tomoya <tomoya.masuko@gmail.com>
      Signed-off-by: NJosh Durgin <josh.durgin@dreamhost.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      f27f616f
  17. 27 2月, 2012 1 次提交
    • M
      qemu: Implement virDomainPMWakeup API · 9bf1bcc5
      Michal Privoznik 提交于
      using 'system-wakeup' monitor command. It is supported only in JSON,
      as we are enabling it if possible. Moreover, this command is available
      in qemu-1.1+ which definitely has JSON.
      9bf1bcc5
  18. 15 2月, 2012 1 次提交
  19. 01 2月, 2012 1 次提交
  20. 27 1月, 2012 1 次提交
    • J
      qemu: Refactor qemuMonitorGetBlockInfo · 65c27e29
      Jiri Denemark 提交于
      QEMU always sends details about all available block devices as an answer
      for "info block"/"query-block" command. On the other hand, our
      qemuMonitorGetBlockInfo was made for a single block devices queries
      only. Thus, when asking for multiple devices, we asked qemu multiple
      times to always get the same answer from which different parts were
      filtered. This patch makes qemuMonitorGetBlockInfo return a hash table
      of all block devices, which may later be used for getting details about
      specific devices.
      65c27e29
  21. 15 12月, 2011 1 次提交
    • J
      qemu: Fix race between async and query jobs · 6948b725
      Jiri Denemark 提交于
      If an async job run on a domain will stop the domain at the end of the
      job, a concurrently run query job can hang in qemu monitor and nothing
      can be done with that domain from this point on. An attempt to start
      such domain results in "Timed out during operation: cannot acquire state
      change lock" error.
      
      However, quite a few things have to happen at the right time... There
      must be an async job running which stops a domain at the end. This race
      was reported with dump --crash but other similar jobs, such as
      (managed)save and migration, should be able to trigger this bug as well.
      While this async job is processing its last monitor command, that is a
      query-migrate to which qemu replies with status "completed", a new
      libvirt API that results in a query job must arrive and stay waiting
      until the query-migrate command finishes. Once query-migrate is done but
      before the async job closes qemu monitor while stopping the domain, the
      other thread needs to wake up and call qemuMonitorSend to send its
      command to qemu. Before qemu gets a chance to respond to this command,
      the async job needs to close the monitor. At this point, the query job
      thread is waiting for a condition that no-one will ever signal so it
      never finishes the job.
      6948b725
  22. 01 12月, 2011 1 次提交
  23. 29 11月, 2011 1 次提交
    • O
      block_resize: Implement qemu monitor functions · 4fa36f13
      Osier Yang 提交于
      Implements functions for both HMP and QMP mode.
      
      For HMP mode, qemu uses "M" as the units by default, so the passed "sized"
      is divided by 1024.
      
      For QMP mode, qemu uses "Bytes" as the units by default, the passed "sized"
      is multiplied by 1024.
      
      All of the monitor functions return -1 on failure, 0 on success, or -2 if
      not supported.
      4fa36f13
  24. 28 10月, 2011 1 次提交
    • D
      Wire up QEMU implementation for virDomainOpenGraphics · f877fed3
      Daniel P. Berrange 提交于
      The QEMU monitor command 'add_client' can be used to connect to
      a VNC or SPICE graphics display. This allows for implementation
      of the virDomainOpenGraphics API
      
      * src/qemu/qemu_driver.c: Implement virDomainOpenGraphics
      * 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:
        Add binding for 'add_client' command
      f877fed3
  25. 27 10月, 2011 1 次提交
    • D
      Add a systemtap script for watching QEMU monitor interactions · 9b76b08a
      Daniel P. Berrange 提交于
      This change adds some systemtap/dtrace probes to the QEMU monitor
      client code. In particular it allows watching of all operations
      for a VM
      
      * examples/systemtap/qemu-monitor.stp: Watch all monitor commands
      * src/Makefile.am: Passing libdir/bindir/sbindir to dtrace2systemtap.pl
      * src/dtrace2systemtap.pl: Accept libdir/bindir/sbindir as args
        and look for '# binary:' comment to mark probes against libvirtd
        vs libvirt.so
      * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor_json.c,
        src/qemu/qemu_monitor_text.c: Add probes for key functions
      9b76b08a
  26. 19 10月, 2011 1 次提交
  27. 29 9月, 2011 1 次提交
  28. 28 9月, 2011 1 次提交
  29. 16 9月, 2011 1 次提交
  30. 06 9月, 2011 2 次提交
    • P
      link-state: qemu: Add monitor handling for link state modification · 8277c151
      Peter Krempa 提交于
      This patch adds handlers for modification of guest's interface
      link state. Both HMP and QMP commands are supported, but as the
      link state functionality is from the beginning supported in QMP
      the HMP code will probably never be used.
      8277c151
    • O
      latency: Update monitor functions for new latency fields · 2f58ba89
      Osier Yang 提交于
      The mainly changes are:
      
      1) Update qemuMonitorGetBlockStatsInfo and it's children (Text/JSON)
         functions to return the value of new latency fields.
      2) Add new function qemuMonitorGetBlockStatsParamsNumber, which is
         to count how many parameters the underlying QEMU supports.
      3) Update virDomainBlockStats in src/qemu/qemu_driver.c to be
         compatible with the changes by 1).
      2f58ba89
  31. 05 9月, 2011 1 次提交
    • E
      snapshot: wire up new qemu monitor command · e702b5ba
      Eric Blake 提交于
      No one uses this yet, but it will be important once
      virDomainSnapshotCreateXML learns a VIR_DOMAIN_SNAPSHOT_DISK_ONLY
      flag, and the xml allows passing in the new file names.
      
      * src/qemu/qemu_monitor.h (qemuMonitorDiskSnapshot): New prototype.
      * src/qemu/qemu_monitor_text.h (qemuMonitorTextDiskSnapshot):
      Likewise.
      * src/qemu/qemu_monitor_json.h (qemuMonitorJSONDiskSnapshot):
      Likewise.
      * src/qemu/qemu_monitor.c (qemuMonitorDiskSnapshot): New
      function.
      * src/qemu/qemu_monitor_json.c (qemuMonitorJSONDiskSnapshot):
      Likewise.
      e702b5ba
  32. 22 7月, 2011 3 次提交
    • A
      Asynchronous event for BlockJob completion · d489b046
      Adam Litke 提交于
      When an operation started by virDomainBlockPull completes (either with
      success or with failure), raise an event to indicate the final status.
      This API allow users to avoid polling on virDomainGetBlockJobInfo if
      they would prefer to use an 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/remote_protocol-structs: structure definitions for protocol verification
      * 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
      d489b046
    • A
      Implement virDomainBlockPull for the qemu driver · b976165c
      Adam Litke 提交于
      The virDomainBlockPull* family of commands are enabled by the
      following HMP/QMP commands: 'block_stream', 'block_job_cancel',
       'info block-jobs' / 'query-block-jobs', and 'block_job_set_speed'.
      
      * src/qemu/qemu_driver.c src/qemu/qemu_monitor_text.[ch]: implement disk
        streaming by using the proper qemu monitor commands.
      * src/qemu/qemu_monitor_json.[ch]: implement commands using the qmp monitor
      b976165c
    • E
      build: rename files.h to virfile.h · 8e22e089
      Eric Blake 提交于
      In preparation for a future patch adding new virFile APIs.
      
      * src/util/files.h, src/util/files.c: Move...
      * src/util/virfile.h, src/util/virfile.c: ...here, and rename
      functions to virFile prefix.  Macro names are intentionally
      left alone.
      * *.c: All '#include "files.h"' uses changed.
      * src/Makefile.am (UTIL_SOURCES): Reflect rename.
      * cfg.mk (exclude_file_name_regexp--sc_prohibit_close): Likewise.
      * src/libvirt_private.syms: Likewise.
      * docs/hacking.html.in: Likewise.
      * HACKING: Regenerate.
      8e22e089