qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] f6f213: migration: Remove RDMA_UNREGISTRATION


From: Richard Henderson
Subject: [Qemu-commits] [qemu/qemu] f6f213: migration: Remove RDMA_UNREGISTRATION_EXAMPLE
Date: Wed, 22 Jun 2022 22:13:55 -0700

  Branch: refs/heads/staging
  Home:   https://github.com/qemu/qemu
  Commit: f6f213e4c713c4a6c3f9de775aa526f2288e3d2d
      
https://github.com/qemu/qemu/commit/f6f213e4c713c4a6c3f9de775aa526f2288e3d2d
  Author: Juan Quintela <quintela@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/rdma.c

  Log Message:
  -----------
  migration: Remove RDMA_UNREGISTRATION_EXAMPLE

Nobody has ever showed up to unregister individual pages, and another
set of patches written by Daniel P. Berrangé <berrange@redhat.com>
just remove qemu_rdma_signal_unregister() function needed here.

Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: 803ca43e4c7fcf32f9f68c118301ccd0c83ece3f
      
https://github.com/qemu/qemu/commit/803ca43e4c7fcf32f9f68c118301ccd0c83ece3f
  Author: Leonardo Bras <leobras@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M io/channel-socket.c

  Log Message:
  -----------
  QIOChannelSocket: Introduce assert and reduce ifdefs to improve readability

During implementation of MSG_ZEROCOPY feature, a lot of #ifdefs were
introduced, particularly at qio_channel_socket_writev().

Rewrite some of those changes so it's easier to read.

Also, introduce an assert to help detect incorrect zero-copy usage is when
it's disabled on build.

Signed-off-by: Leonardo Bras <leobras@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
  dgilbert: Fixed up thinko'd g_assert_unreachable->g_assert_not_reached


  Commit: 4f5a09714c983a3471fd12e3c7f3196e95c650c1
      
https://github.com/qemu/qemu/commit/4f5a09714c983a3471fd12e3c7f3196e95c650c1
  Author: Leonardo Bras <leobras@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M io/channel-socket.c

  Log Message:
  -----------
  QIOChannelSocket: Fix zero-copy send so socket flush works

Somewhere between v6 and v7 the of the zero-copy-send patchset a crucial
part of the flushing mechanism got missing: incrementing zero_copy_queued.

Without that, the flushing interface becomes a no-op, and there is no
guarantee the buffer is really sent.

This can go as bad as causing a corruption in RAM during migration.

Fixes: 2bc58ffc2926 ("QIOChannelSocket: Implement io_writev zero copy flag & 
io_flush for CONFIG_LINUX")
Reported-by: 徐闯 <xuchuangxclwt@bytedance.com>
Signed-off-by: Leonardo Bras <leobras@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: 1abaec9a1b2c23f7aa94709a422128d9e42c3e0b
      
https://github.com/qemu/qemu/commit/1abaec9a1b2c23f7aa94709a422128d9e42c3e0b
  Author: Leonardo Bras <leobras@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/migration.c
    M monitor/hmp-cmds.c
    M qapi/migration.json

  Log Message:
  -----------
  migration: Change zero_copy_send from migration parameter to migration 
capability

When originally implemented, zero_copy_send was designed as a Migration
paramenter.

But taking into account how is that supposed to work, and how
the difference between a capability and a parameter, it only makes sense
that zero-copy-send would work better as a capability.

Taking into account how recently the change got merged, it was decided
that it's still time to make it right, and convert zero_copy_send into
a Migration capability.

Signed-off-by: Leonardo Bras <leobras@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Acked-by: Markus Armbruster <armbru@redhat.com>
Acked-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
  dgilbert: always define the capability, even on non-Linux but error if
set; avoids build problems with the capability


  Commit: 87e42764490896e66ab8a3c93280384689b0acb4
      
https://github.com/qemu/qemu/commit/87e42764490896e66ab8a3c93280384689b0acb4
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    A include/io/channel-null.h
    A io/channel-null.c
    M io/meson.build
    M io/trace-events
    M tests/unit/meson.build
    A tests/unit/test-io-channel-null.c

  Log Message:
  -----------
  io: add a QIOChannelNull equivalent to /dev/null

This is for code which needs a portable equivalent to a QIOChannelFile
connected to /dev/null.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: c0e0825c98cf608fe2775395b79c53efe0324f8e
      
https://github.com/qemu/qemu/commit/c0e0825c98cf608fe2775395b79c53efe0324f8e
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/ram.c

  Log Message:
  -----------
  migration: switch to use QIOChannelNull for dummy channel

This removes one further custom impl of QEMUFile, in favour of a
QIOChannel based impl.

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: 246683c22f21df0572bd3ab756ac9e688e856cb1
      
https://github.com/qemu/qemu/commit/246683c22f21df0572bd3ab756ac9e688e856cb1
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/rdma.c

  Log Message:
  -----------
  migration: remove unreachble RDMA code in save_hook impl

The QEMUFile 'save_hook' callback has a 'size_t size' parameter.

The RDMA impl of this has logic that takes different actions
depending on whether the value is zero or non-zero. It has
commented out logic that would have taken further actions
if the value was negative.

The only place where the 'save_hook' callback is invoked is
the ram_control_save_page() method, which passes 'size'
through from its caller. The only caller of this method is
in turn control_save_page(). This method unconditionally
passes the 'TARGET_PAGE_SIZE' constant for the 'size' parameter.

IOW, the only scenario for 'size' that can execute in the
qemu_rdma_save_page method is 'size > 0'. The remaining code
has been unreachable since RDMA support was first introduced
9 years ago.

Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: c7fc8d323ad1a3110925088096376eca4163be71
      
https://github.com/qemu/qemu/commit/c7fc8d323ad1a3110925088096376eca4163be71
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/qemu-file.c

  Log Message:
  -----------
  migration: rename rate limiting fields in QEMUFile

This renames the following QEMUFile fields

 * bytes_xfer -> rate_limit_used
 * xfer_limit -> rate_limit_max

The intent is to make it clear that 'bytes_xfer' is specifically related
to rate limiting of data and applies to data queued, which need not have
been transferred on the wire yet if a flush hasn't taken place.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: 154d87b4ef7f32fe4b11357648ec0b81b7e77d59
      
https://github.com/qemu/qemu/commit/154d87b4ef7f32fe4b11357648ec0b81b7e77d59
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/qemu-file.c

  Log Message:
  -----------
  migration: rename 'pos' field in QEMUFile to 'bytes_processed'

The field name 'pos' gives the misleading impression that the QEMUFile
objects are seekable. This is not the case, as in general we just
have an opaque stream. The users of this method are only interested
in the total bytes processed. This switches to a new name that
reflects the intended usage.

Every QIOChannel backed impl of QEMUFile is currently ignoring the
'pos' field.

The only QEMUFile impl using 'pos' as an offset for I/O is the block
device vmstate. A later patch is introducing a QIOChannel impl for the
vmstate, and to handle this it is tracking a file offset itself
internally to the QIOChannel impl. So when we later eliminate the
QEMUFileOps callbacks later, the 'pos' field will no longer be used
from any I/O read/write methods.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
  dgilbert: Fixed long line


  Commit: fbfa6404e597920ad72510461e0b0fed5243ce1d
      
https://github.com/qemu/qemu/commit/fbfa6404e597920ad72510461e0b0fed5243ce1d
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/block.c
    M migration/migration.c
    M migration/qemu-file.c
    M migration/qemu-file.h
    M migration/savevm.c
    M migration/vmstate.c

  Log Message:
  -----------
  migration: rename qemu_ftell to qemu_file_total_transferred

The name 'ftell' gives the misleading impression that the QEMUFile
objects are seekable. This is not the case, as in general we just
have an opaque stream. The users of this method are only interested
in the total bytes processed. This switches to a new name that
reflects the intended usage.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
   dgilbert: Wrapped long line


  Commit: 1a93bd2f60acbf7eb3583805f9d6605d909d403f
      
https://github.com/qemu/qemu/commit/1a93bd2f60acbf7eb3583805f9d6605d909d403f
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/qemu-file.c
    M migration/qemu-file.h
    M migration/ram.c

  Log Message:
  -----------
  migration: rename qemu_update_position to qemu_file_credit_transfer

The qemu_update_position method name gives the misleading impression
that it is changing the current file offset. Most of the files are
just streams, however, so there's no concept of a file offset in the
general case.

What this method is actually used for is to report on the number of
bytes that have been transferred out of band from the main I/O methods.
This new name better reflects this purpose.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: bc698c367d6fac15454ee3ff6bb168e43c151465
      
https://github.com/qemu/qemu/commit/bc698c367d6fac15454ee3ff6bb168e43c151465
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/multifd.c
    M migration/qemu-file.c
    M migration/qemu-file.h

  Log Message:
  -----------
  migration: rename qemu_file_update_transfer to qemu_file_acct_rate_limit

The qemu_file_update_transfer name doesn't give a clear guide on what
its purpose is, and how it differs from the qemu_file_credit_transfer
method. The latter is specifically for accumulating for total migration
traffic, while the former is specifically for accounting in thue rate
limit calculations. The new name give better guidance on its usage.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: 65cf200a51ddc6d0a28ecceac30dc892233cddd7
      
https://github.com/qemu/qemu/commit/65cf200a51ddc6d0a28ecceac30dc892233cddd7
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    A migration/channel-block.c
    A migration/channel-block.h
    M migration/meson.build

  Log Message:
  -----------
  migration: introduce a QIOChannel impl for BlockDriverState VMState

Introduce a QIOChannelBlock class that exposes the BlockDriverState
VMState region for I/O.

This is kept in the migration/ directory rather than io/, to avoid
a mutual dependancy between block/ <-> io/ directories. Also the
VMState should only be used by the migration code.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
  dgilbert: Fixed coding style in qio_channel_block_close


  Commit: 67bdabe2af52cf5bb9420f57e0f67c9b571e1e5d
      
https://github.com/qemu/qemu/commit/67bdabe2af52cf5bb9420f57e0f67c9b571e1e5d
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/savevm.c

  Log Message:
  -----------
  migration: convert savevm to use QIOChannelBlock for VMState

With this change, all QEMUFile usage is backed by QIOChannel at
last.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
  dgilbert: Wrap long lines


  Commit: 365c0463db9382130c7201c5c91021fe84bf5f77
      
https://github.com/qemu/qemu/commit/365c0463db9382130c7201c5c91021fe84bf5f77
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/qemu-file.c
    M migration/qemu-file.h
    M migration/rdma.c

  Log Message:
  -----------
  migration: stop passing 'opaque' parameter to QEMUFile hooks

The only user of the hooks is RDMA which provides a QIOChannel backed
impl of QEMUFile. It can thus use the qemu_file_get_ioc() method.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: 2893a2884b1deb09af51f4377f1aaf29b28b0c93
      
https://github.com/qemu/qemu/commit/2893a2884b1deb09af51f4377f1aaf29b28b0c93
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/qemu-file-channel.c
    M migration/qemu-file.c
    M migration/qemu-file.h

  Log Message:
  -----------
  migration: hardcode assumption that QEMUFile is backed with QIOChannel

The only callers of qemu_fopen_ops pass 'true' for the 'has_ioc'
parameter, so hardcode this assumption in QEMUFile, by passing in
the QIOChannel object as a non-opaque parameter.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
   dgilbert: Fixed long line


  Commit: c0c6e1e2dd26ee3ee0218d64be6c532872935070
      
https://github.com/qemu/qemu/commit/c0c6e1e2dd26ee3ee0218d64be6c532872935070
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/qemu-file-channel.c
    M migration/qemu-file.c
    M migration/qemu-file.h

  Log Message:
  -----------
  migration: introduce new constructors for QEMUFile

Prepare for the elimination of QEMUFileOps by introducing a pair of new
constructors. This lets us distinguish between an input and output file
object explicitly rather than via the existance of specific callbacks.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: 0f58c3fcc7e0e9eb9127d4a2019f4a31825d79e3
      
https://github.com/qemu/qemu/commit/0f58c3fcc7e0e9eb9127d4a2019f4a31825d79e3
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/qemu-file.h

  Log Message:
  -----------
  migration: remove unused QEMUFileGetFD typedef / qemu_get_fd method

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: d3c581b750ab099aa8937df5533655b3f9d08ab3
      
https://github.com/qemu/qemu/commit/d3c581b750ab099aa8937df5533655b3f9d08ab3
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/qemu-file-channel.c
    M migration/qemu-file.c
    M migration/qemu-file.h

  Log Message:
  -----------
  migration: remove the QEMUFileOps 'shut_down' callback

This directly implements the shutdown logic using QIOChannel APIs.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: 80ad97069c3c434a3631f0c8bc0d5c4cee09be6d
      
https://github.com/qemu/qemu/commit/80ad97069c3c434a3631f0c8bc0d5c4cee09be6d
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/qemu-file-channel.c
    M migration/qemu-file.c
    M migration/qemu-file.h

  Log Message:
  -----------
  migration: remove the QEMUFileOps 'set_blocking' callback

This directly implements the set_blocking logic using QIOChannel APIs.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: 0ae1f7f055d757c01ce3144a7041fa9341a3715b
      
https://github.com/qemu/qemu/commit/0ae1f7f055d757c01ce3144a7041fa9341a3715b
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/qemu-file-channel.c
    M migration/qemu-file.c
    M migration/qemu-file.h

  Log Message:
  -----------
  migration: remove the QEMUFileOps 'close' callback

This directly implements the close logic using QIOChannel APIs.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: ded3910448f30da1c78e06e611f12ca1b325ab08
      
https://github.com/qemu/qemu/commit/ded3910448f30da1c78e06e611f12ca1b325ab08
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/qemu-file-channel.c
    M migration/qemu-file.c
    M migration/qemu-file.h

  Log Message:
  -----------
  migration: remove the QEMUFileOps 'get_buffer' callback

This directly implements the get_buffer logic using QIOChannel APIs.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: 44879981a25f1e4c4b31d3b9cd84a8afeb3c9cb8
      
https://github.com/qemu/qemu/commit/44879981a25f1e4c4b31d3b9cd84a8afeb3c9cb8
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/qemu-file-channel.c
    M migration/qemu-file.c
    M migration/qemu-file.h

  Log Message:
  -----------
  migration: remove the QEMUFileOps 'writev_buffer' callback

This directly implements the writev_buffer logic using QIOChannel APIs.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: 7b124bea5500f45b2f6ddba647d9c01041a90a90
      
https://github.com/qemu/qemu/commit/7b124bea5500f45b2f6ddba647d9c01041a90a90
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/qemu-file-channel.c
    M migration/qemu-file.c
    M migration/qemu-file.h

  Log Message:
  -----------
  migration: remove the QEMUFileOps 'get_return_path' callback

This directly implements the get_return_path logic using QIOChannel APIs.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: fb49d96eb2d3f8bc2e281f21c52de73285477232
      
https://github.com/qemu/qemu/commit/fb49d96eb2d3f8bc2e281f21c52de73285477232
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M migration/channel.c
    M migration/colo.c
    M migration/meson.build
    M migration/migration.c
    R migration/qemu-file-channel.c
    R migration/qemu-file-channel.h
    M migration/qemu-file.c
    M migration/qemu-file.h
    M migration/ram.c
    M migration/rdma.c
    M migration/savevm.c
    M tests/unit/test-vmstate.c

  Log Message:
  -----------
  migration: remove the QEMUFileOps abstraction

Now that all QEMUFile callbacks are removed, the entire concept can be
deleted.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: 13cf0b90dfb3faf7b4fa26fb8ca33b5025a8842c
      
https://github.com/qemu/qemu/commit/13cf0b90dfb3faf7b4fa26fb8ca33b5025a8842c
  Author: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M accel/kvm/kvm-all.c

  Log Message:
  -----------
  accel/kvm/kvm-all: Refactor per-vcpu dirty ring reaping

Add a non-required argument 'CPUState' to kvm_dirty_ring_reap so
that it can cover single vcpu dirty-ring-reaping scenario.

Signed-off-by: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
Reviewed-by: Peter Xu <peterx@redhat.com>
Message-Id: 
<bc37b83d5a189add887433728a0f632d35fb3e3e.1652931128.git.huangy81@chinatelecom.cn>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: 81e1f125fa1cb812af512085ae5f44242a8f35a2
      
https://github.com/qemu/qemu/commit/81e1f125fa1cb812af512085ae5f44242a8f35a2
  Author: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M cpus-common.c
    M include/exec/cpu-common.h

  Log Message:
  -----------
  cpus: Introduce cpu_list_generation_id

Introduce cpu_list_generation_id to track cpu list generation so
that cpu hotplug/unplug can be detected during measurement of
dirty page rate.

cpu_list_generation_id could be used to detect changes of cpu
list, which is prepared for dirty page rate measurement.

Signed-off-by: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
Reviewed-by: Peter Xu <peterx@redhat.com>
Message-Id: 
<4d7a5f2c86066839054282b1c224067d89d32fc1.1652931128.git.huangy81@chinatelecom.cn>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: 26aceab45899e98f7d21e491cae45622780ab5d6
      
https://github.com/qemu/qemu/commit/26aceab45899e98f7d21e491cae45622780ab5d6
  Author: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    A include/sysemu/dirtyrate.h
    M migration/dirtyrate.c
    M migration/dirtyrate.h

  Log Message:
  -----------
  migration/dirtyrate: Refactor dirty page rate calculation

abstract out dirty log change logic into function
global_dirty_log_change.

abstract out dirty page rate calculation logic via
dirty-ring into function vcpu_calculate_dirtyrate.

abstract out mathematical dirty page rate calculation
into do_calculate_dirtyrate, decouple it from DirtyStat.

rename set_sample_page_period to dirty_stat_wait, which
is well-understood and will be reused in dirtylimit.

handle cpu hotplug/unplug scenario during measurement of
dirty page rate.

export util functions outside migration.

Signed-off-by: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
Reviewed-by: Peter Xu <peterx@redhat.com>
Message-Id: 
<1d65b53c19cfc7dca0114422129515055fa18fb8.1652931128.git.huangy81@chinatelecom.cn>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: 6d1ba4318be91818facfb11daff119ac96f1c4ac
      
https://github.com/qemu/qemu/commit/6d1ba4318be91818facfb11daff119ac96f1c4ac
  Author: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M include/exec/memory.h
    A include/sysemu/dirtylimit.h
    A softmmu/dirtylimit.c
    M softmmu/meson.build

  Log Message:
  -----------
  softmmu/dirtylimit: Implement vCPU dirtyrate calculation periodically

Introduce the third method GLOBAL_DIRTY_LIMIT of dirty
tracking for calculate dirtyrate periodly for dirty page
rate limit.

Add dirtylimit.c to implement dirtyrate calculation periodly,
which will be used for dirty page rate limit.

Add dirtylimit.h to export util functions for dirty page rate
limit implementation.

Signed-off-by: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
Reviewed-by: Peter Xu <peterx@redhat.com>
Message-Id: 
<69a2287b9bf98a4a3d967e01091cb8f6bf80ead4.1652931128.git.huangy81@chinatelecom.cn>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: e2e611fe54177ff715bdcc07bd4d18b29ab9f465
      
https://github.com/qemu/qemu/commit/e2e611fe54177ff715bdcc07bd4d18b29ab9f465
  Author: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M accel/kvm/kvm-all.c
    M accel/stubs/kvm-stub.c
    M include/sysemu/kvm.h

  Log Message:
  -----------
  accel/kvm/kvm-all: Introduce kvm_dirty_ring_size function

Introduce kvm_dirty_ring_size util function to help calculate
dirty ring ful time.

Signed-off-by: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
Acked-by: Peter Xu <peterx@redhat.com>
Message-Id: 
<c99e7851c2e2b99312cfbabe4d1f6379a3da8a44.1652931128.git.huangy81@chinatelecom.cn>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
  dgilbert: Fixed up excess #endif


  Commit: c57873ef5f786903c6756582c3bccac3a59484fa
      
https://github.com/qemu/qemu/commit/c57873ef5f786903c6756582c3bccac3a59484fa
  Author: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M accel/kvm/kvm-all.c
    M include/hw/core/cpu.h
    M include/sysemu/dirtylimit.h
    M softmmu/dirtylimit.c
    M softmmu/trace-events

  Log Message:
  -----------
  softmmu/dirtylimit: Implement virtual CPU throttle

Setup a negative feedback system when vCPU thread
handling KVM_EXIT_DIRTY_RING_FULL exit by introducing
throttle_us_per_full field in struct CPUState. Sleep
throttle_us_per_full microseconds to throttle vCPU
if dirtylimit is in service.

Signed-off-by: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
Reviewed-by: Peter Xu <peterx@redhat.com>
Message-Id: 
<ec26c4bc4874b2c72141a98b028b431404975219.1652931128.git.huangy81@chinatelecom.cn>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: d523ce6b2c03245c9e0d6b2cd212303aa4d73b55
      
https://github.com/qemu/qemu/commit/d523ce6b2c03245c9e0d6b2cd212303aa4d73b55
  Author: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M hmp-commands-info.hx
    M hmp-commands.hx
    M include/monitor/hmp.h
    M qapi/migration.json
    M softmmu/dirtylimit.c
    M tests/qtest/qmp-cmd-test.c

  Log Message:
  -----------
  softmmu/dirtylimit: Implement dirty page rate limit

Implement dirtyrate calculation periodically basing on
dirty-ring and throttle virtual CPU until it reachs the quota
dirty page rate given by user.

Introduce qmp commands "set-vcpu-dirty-limit",
"cancel-vcpu-dirty-limit", "query-vcpu-dirty-limit"
to enable, disable, query dirty page limit for virtual CPU.

Meanwhile, introduce corresponding hmp commands
"set_vcpu_dirty_limit", "cancel_vcpu_dirty_limit",
"info vcpu_dirty_limit" so the feature can be more usable.

"query-vcpu-dirty-limit" success depends on enabling dirty
page rate limit, so just add it to the list of skipped
command to ensure qmp-cmd-test run successfully.

Signed-off-by: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
Acked-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Message-Id: 
<80195172e377e3d96394b5b94425098260380bfa.1652931128.git.huangy81@chinatelecom.cn>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: 9c6eb6dc3785a280b504195d308da082641af2a7
      
https://github.com/qemu/qemu/commit/9c6eb6dc3785a280b504195d308da082641af2a7
  Author: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M tests/qtest/migration-helpers.c
    M tests/qtest/migration-helpers.h
    M tests/qtest/migration-test.c

  Log Message:
  -----------
  tests: Add dirty page rate limit test

Add dirty page rate limit test if kernel support dirty ring.

The following qmp commands are covered by this test case:
"calc-dirty-rate", "query-dirty-rate", "set-vcpu-dirty-limit",
"cancel-vcpu-dirty-limit" and "query-vcpu-dirty-limit".

Signed-off-by: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
Acked-by: Peter Xu <peterx@redhat.com>
Message-Id: 
<81ecb7b473d8ee2adf414a1f69ce8b7bd678c558.1652931128.git.huangy81@chinatelecom.cn>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


  Commit: b1b0c16f144a925bd4fd8fa0926794bc11144f7a
      
https://github.com/qemu/qemu/commit/b1b0c16f144a925bd4fd8fa0926794bc11144f7a
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2022-06-22 (Wed, 22 Jun 2022)

  Changed paths:
    M accel/kvm/kvm-all.c
    M accel/stubs/kvm-stub.c
    M cpus-common.c
    M hmp-commands-info.hx
    M hmp-commands.hx
    M include/exec/cpu-common.h
    M include/exec/memory.h
    M include/hw/core/cpu.h
    A include/io/channel-null.h
    M include/monitor/hmp.h
    A include/sysemu/dirtylimit.h
    A include/sysemu/dirtyrate.h
    M include/sysemu/kvm.h
    A io/channel-null.c
    M io/channel-socket.c
    M io/meson.build
    M io/trace-events
    M migration/block.c
    A migration/channel-block.c
    A migration/channel-block.h
    M migration/channel.c
    M migration/colo.c
    M migration/dirtyrate.c
    M migration/dirtyrate.h
    M migration/meson.build
    M migration/migration.c
    M migration/multifd.c
    R migration/qemu-file-channel.c
    R migration/qemu-file-channel.h
    M migration/qemu-file.c
    M migration/qemu-file.h
    M migration/ram.c
    M migration/rdma.c
    M migration/savevm.c
    M migration/vmstate.c
    M monitor/hmp-cmds.c
    M qapi/migration.json
    A softmmu/dirtylimit.c
    M softmmu/meson.build
    M softmmu/trace-events
    M tests/qtest/migration-helpers.c
    M tests/qtest/migration-helpers.h
    M tests/qtest/migration-test.c
    M tests/qtest/qmp-cmd-test.c
    M tests/unit/meson.build
    A tests/unit/test-io-channel-null.c
    M tests/unit/test-vmstate.c

  Log Message:
  -----------
  Merge tag 'pull-migration-20220622b' of https://gitlab.com/dagrh/qemu into 
staging

Migration pull 2022-06-22

Compared to Juan's pull:
  a) Hopefully fixed non-Linux builds
    (Local build test on mingw64 works
    Note: the zero-copy capability is now
    defined on non-Linux systems)
  b) Added Hyman's series - it had been
    on queue for a while (sorry for the delay)
  c) Fixed up a whole bunch of check-patch failures
    - please use it!

In this today migration PULL request:
- Dainiel Berrangé - qemufileops cleanup
- Leonardo Bras  - cleanups for zero copy
- Juan Quintela  - RDMA cleanups
- Hyman Huang - per-vcpu dirty ring work

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEERfXHG0oMt/uXep+pBRYzHrxb/ecFAmKzYWQACgkQBRYzHrxb
# /edc1w//ekXKYTWBQtBeGX/iB7r00JuGfG4wOf3PN2RI+aLt//cDKVhYh1WuzEl8
# g0mTduISVU76UfCWJPu40rU8W8pnbmHXW9fwfV9dfb/CQZJ2js+pZ1HtxXwnRJ9I
# ScA+aD7HH+2JF5QQaV0/LxaPqQPQUdieTCI6vmjaoX/Dm+aaLc4evy2l2cE6pyS/
# fnq6mXqejk7ggzluGLCGsS3X8Ody5z+vcUwhwS18MnHVmJYJviQ5elcSMOCMqR3a
# VSeCsNbyEP+MQ9e+hJ985ZcVBzmx+4BHcLD1/IRkdOpusTv9fuVgtoVFnELeJcvM
# 1UJr5je0beEvXtgwOo2fbhlp2zt0yATMukcUzJOUn0oY2oJlu/mYTGnxP7HkXfaa
# xYT2U9pcLE7tuLBDtQbUmlydTKBytW5tfksAqCpfwBVBJJvrvUWcUxYAwJfANcFs
# AHlyQPsTkljZ2oA1Wsx5zzWymN8/8MR2ocgHMxQ28aXegV6Fc/eK8mVTT+gs+JZD
# J0DzVYmvmVYzdAfTkpvqWb9MZch4pNgIlS6A3tP0CXwabyP+le+0bJokHSBqqmAL
# JM1gwIenuRch0QH8rbg1eJu5dCri9K0YLu26hpjlfxZbhAFpgxtw7JrqZIiZRxoL
# x5ChRwWNzui+f2RAjPI5XqSg+jBArWSAEBHhQxFWTwXKClBr+dQ=
# =sscN
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed 22 Jun 2022 11:37:24 AM PDT
# gpg:                using RSA key 45F5C71B4A0CB7FB977A9FA90516331EBC5BFDE7
# gpg: Good signature from "Dr. David Alan Gilbert (RH2) <dgilbert@redhat.com>" 
[full]

* tag 'pull-migration-20220622b' of https://gitlab.com/dagrh/qemu: (33 commits)
  tests: Add dirty page rate limit test
  softmmu/dirtylimit: Implement dirty page rate limit
  softmmu/dirtylimit: Implement virtual CPU throttle
  accel/kvm/kvm-all: Introduce kvm_dirty_ring_size function
  softmmu/dirtylimit: Implement vCPU dirtyrate calculation periodically
  migration/dirtyrate: Refactor dirty page rate calculation
  cpus: Introduce cpu_list_generation_id
  accel/kvm/kvm-all: Refactor per-vcpu dirty ring reaping
  migration: remove the QEMUFileOps abstraction
  migration: remove the QEMUFileOps 'get_return_path' callback
  migration: remove the QEMUFileOps 'writev_buffer' callback
  migration: remove the QEMUFileOps 'get_buffer' callback
  migration: remove the QEMUFileOps 'close' callback
  migration: remove the QEMUFileOps 'set_blocking' callback
  migration: remove the QEMUFileOps 'shut_down' callback
  migration: remove unused QEMUFileGetFD typedef / qemu_get_fd method
  migration: introduce new constructors for QEMUFile
  migration: hardcode assumption that QEMUFile is backed with QIOChannel
  migration: stop passing 'opaque' parameter to QEMUFile hooks
  migration: convert savevm to use QIOChannelBlock for VMState
  ...

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


Compare: https://github.com/qemu/qemu/compare/2b049d2c8dc0...b1b0c16f144a



reply via email to

[Prev in Thread] Current Thread [Next in Thread]