1. 12 8月, 2013 1 次提交
  2. 27 7月, 2013 1 次提交
    • I
      Implement sync modes for drive-backup. · fc5d3f84
      Ian Main 提交于
      This patch adds sync-modes to the drive-backup interface and
      implements the FULL, NONE and TOP modes of synchronization.
      
      FULL performs as before copying the entire contents of the drive
      while preserving the point-in-time using CoW.
      NONE only copies new writes to the target drive.
      TOP copies changes to the topmost drive image and preserves the
      point-in-time using CoW.
      
      For sync mode TOP are creating a new target image using the same backing
      file as the original disk image.  Then any new data that has been laid
      on top of it since creation is copied in the main backup_run() loop.
      There is an extra check in the 'TOP' case so that we don't bother to copy
      all the data of the backing file as it already exists in the target.
      This is where the bdrv_co_is_allocated() is used to determine if the
      data exists in the topmost layer or below.
      
      Also any new data being written is intercepted via the write_notifier
      hook which ends up calling backup_do_cow() to copy old data out before
      it gets overwritten.
      
      For mode 'NONE' we create the new target image and only copy in the
      original data from the disk image starting from the time the call was
      made.  This preserves the point in time data by only copying the parts
      that are *going to change* to the target image.  This way we can
      reconstruct the final image by checking to see if the given block exists
      in the new target image first, and if it does not, you can get it from
      the original image.  This is basically an optimization allowing you to
      do point-in-time snapshots with low overhead vs the 'FULL' version.
      
      Since there is no old data to copy out the loop in backup_run() for the
      NONE case just calls qemu_coroutine_yield() which only wakes up after
      an event (usually cancel in this case).  The rest is handled by the
      before_write notifier which again calls backup_do_cow() to write out
      the old data so it can be preserved.
      Signed-off-by: NIan Main <imain@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      fc5d3f84
  3. 18 7月, 2013 1 次提交
  4. 16 7月, 2013 1 次提交
    • A
      net: add support of mac-programming over macvtap in QEMU side · b1be4280
      Amos Kong 提交于
      Currently macvtap based macvlan device is working in promiscuous
      mode, we want to implement mac-programming over macvtap through
      Libvirt for better performance.
      
      Design:
       QEMU notifies Libvirt when rx-filter config is changed in guest,
       then Libvirt query the rx-filter information by a monitor command,
       and sync the change to macvtap device. Related rx-filter config
       of the nic contains main mac, rx-mode items and vlan table.
      
      This patch adds a QMP event to notify management of rx-filter change,
      and adds a monitor command for management to query rx-filter
      information.
      
      Test:
       If we repeatedly add/remove vlan, and change macaddr of vlan
       interfaces in guest by a loop script.
      
      Result:
       The events will flood the QMP client(management), management takes
       too much resource to process the events.
      
       Event_throttle API (set rate to 1 ms) can avoid the events to flood
       QMP client, but it could cause an unexpected delay (~1ms), guests
       guests normally expect rx-filter updates immediately.
      
       So we use a flag for each nic to avoid events flooding, the event
       is emitted once until the query command is executed. The flag
       implementation could not introduce unexpected delay.
      
      There maybe exist an uncontrollable delay if we let Libvirt do the
      real change, guests normally expect rx-filter updates immediately.
      But it's another separate issue, we can investigate it when the
      work in Libvirt side is done.
      
      Michael S. Tsirkin: tweaked to enable events on start
      Michael S. Tsirkin: fixed not to crash when no id
      Michael S. Tsirkin: fold in patch:
         "additional fixes for mac-programming feature"
      Amos Kong: always notify QMP client if mactable is changed
      Amos Kong: return NULL list if no net client supports rx-filter query
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NAmos Kong <akong@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      b1be4280
  5. 15 7月, 2013 1 次提交
    • S
      blockdev: add sync mode to drive-backup QMP command · b53169ea
      Stefan Hajnoczi 提交于
      The drive-backup command is similar to the drive-mirror command, except
      no guest data written after the command executes gets copied.  Add a
      sync mode argument which determines whether the entire disk is copied,
      just allocated clusters, or only clusters being written to by the guest.
      
      Currently only sync mode 'full' is supported - it copies the entire disk.
      For read-only point-in-time snapshots we may only need sync mode 'none'
      since the target can be a qcow2 file using the guest's disk as its
      backing file (no need to copy the entire disk).  Finally, sync mode
      'top' is useful if we wish to preserve the backing chain.
      
      Note that this patch just adds the sync mode argument to drive-backup.
      It does not implement sync modes 'top' or 'none'.  This patch is
      necessary so we can add a drive-backup HMP command that behaves like the
      existing drive-mirror HMP command and takes a sync mode.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      b53169ea
  6. 28 6月, 2013 1 次提交
    • S
      block: add drive-backup QMP command · 99a9addf
      Stefan Hajnoczi 提交于
      @drive-backup
      
      Start a point-in-time copy of a block device to a new destination.  The
      status of ongoing drive-backup operations can be checked with
      query-block-jobs where the BlockJobInfo.type field has the value 'backup'.
      The operation can be stopped before it has completed using the
      block-job-cancel command.
      
      @device: the name of the device which should be copied.
      
      @target: the target of the new image. If the file exists, or if it
               is a device, the existing file/device will be used as the new
               destination.  If it does not exist, a new file will be created.
      
      @format: #optional the format of the new destination, default is to
               probe if @mode is 'existing', else the format of the source
      
      @mode: #optional whether and how QEMU should create a new image, default is
             'absolute-paths'.
      
      @speed: #optional the maximum speed, in bytes per second
      
      @on-source-error: #optional the action to take on an error on the source,
                        default 'report'.  'stop' and 'enospc' can only be used
                        if the block device supports io-status (see BlockInfo).
      
      @on-target-error: #optional the action to take on an error on the target,
                        default 'report' (no limitations, since this applies to
                        a different block device than @device).
      
      Note that @on-source-error and @on-target-error only affect background I/O.
      If an error occurs during a guest write request, the device's rerror/werror
      actions will be used.
      
      Returns: nothing on success
               If @device is not a valid block device, DeviceNotFound
      
      Since 1.6
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NKevin Wolf <kwolf@redhat.com>
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      99a9addf
  7. 07 6月, 2013 1 次提交
  8. 02 5月, 2013 1 次提交
  9. 01 5月, 2013 1 次提交
  10. 25 4月, 2013 1 次提交
  11. 12 4月, 2013 1 次提交
  12. 26 3月, 2013 4 次提交
  13. 13 3月, 2013 1 次提交
    • S
      Support for TPM command line options · d1a0cf73
      Stefan Berger 提交于
      This patch adds support for TPM command line options.
      The command line options supported here are
      
      ./qemu-... -tpmdev passthrough,path=<path to TPM device>,id=<id>
                 -device tpm-tis,tpmdev=<id>,id=<other id>
      
      and
      
      ./qemu-... -tpmdev help
      
      where the latter works similar to -soundhw help and shows a list of
      available TPM backends (for example 'passthrough').
      
      Using the type parameter, the backend is chosen, i.e., 'passthrough' for the
      passthrough driver. The interpretation of the other parameters along
      with determining whether enough parameters were provided is pushed into
      the backend driver, which needs to implement the interface function
      'create' and return a TPMDriverOpts structure if the VM can be started or
      'NULL' if not enough or bad parameters were provided.
      
      Monitor support for 'info tpm' has been added. It for example prints the
      following:
      
      (qemu) info tpm
      TPM devices:
       tpm0: model=tpm-tis
        \ tpm0: type=passthrough,path=/dev/tpm0,cancel-path=/sys/devices/pnp0/00:09/cancel
      Signed-off-by: NStefan Berger <stefanb@linux.vnet.ibm.com>
      Reviewed-by: NCorey Bryant <coreyb@linux.vnet.ibm.com>
      Reviewed-by: NJoel Schopp <jschopp@linux.vnet.ibm.com>
      Message-id: 1361987275-26289-2-git-send-email-stefanb@linux.vnet.ibm.com
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      d1a0cf73
  14. 27 2月, 2013 1 次提交
  15. 07 2月, 2013 3 次提交
    • M
      qemu-char: Saner naming of memchar stuff & doc fixes · 3949e594
      Markus Armbruster 提交于
      New device, has never been released, so we can still improve things
      without worrying about compatibility.
      
      Naming is a mess.  The code calls the device driver CirMemCharDriver,
      the public API calls it "memory", "memchardev", or "memchar", and the
      special commands are named like "memchar-FOO".  "memory" is a
      particularly unfortunate choice, because there's another character
      device driver called MemoryDriver.  Moreover, the device's distinctive
      property is that it's a ring buffer, not that's in memory.  Therefore:
      
      * Rename CirMemCharDriver to RingBufCharDriver, and call the thing a
        "ringbuf" in the API.
      
      * Rename QMP and HMP commands from memchar-FOO to ringbuf-FOO.
      
      * Rename device parameter from maxcapacity to size (simple words are
        good for you).
      
      * Clearly mark the parameter as optional in documentation.
      
      * Fix error reporting so that chardev-add reports to current monitor,
        not stderr.
      
      * Replace cirmem in C identifiers by ringbuf.
      
      * Rework documentation.  Document the impact of our crappy UTF-8
        handling on reading.
      
      * QMP examples that even work.
      
      I could split this up into multiple commits, but they'd change the
      same documentation lines multiple times.  Not worth it.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      3949e594
    • M
      qmp: Clean up design of memchar-read · 3ab651fc
      Markus Armbruster 提交于
      The data returned has a well-defined size, which makes the size
      returned along with it redundant at best.  Drop it.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      3ab651fc
    • M
      qmp: Fix design bug and read beyond buffer in memchar-write · 82e59a67
      Markus Armbruster 提交于
      Command memchar-write takes data and size parameter.  Begs the
      question what happens when data doesn't match size.
      
      With format base64, qmp_memchar_write() copies the full data argument,
      regardless of size argument.
      
      With format utf8, qmp_memchar_write() copies size bytes from data,
      happily reading beyond data.  Copies crap from the heap or even
      crashes.
      
      Drop the size parameter, and always copy the full data argument.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      82e59a67
  16. 01 2月, 2013 1 次提交
  17. 30 1月, 2013 1 次提交
  18. 26 1月, 2013 2 次提交
  19. 25 1月, 2013 3 次提交
  20. 16 1月, 2013 3 次提交
  21. 24 10月, 2012 4 次提交
  22. 18 10月, 2012 2 次提交
  23. 03 10月, 2012 1 次提交
  24. 29 9月, 2012 3 次提交