qemu-e2k/migration
Leonardo Bras b88651cb4d QIOChannel: Add flags on io_writev and introduce io_flush callback
Add flags to io_writev and introduce io_flush as optional callback to
QIOChannelClass, allowing the implementation of zero copy writes by
subclasses.

How to use them:
- Write data using qio_channel_writev*(...,QIO_CHANNEL_WRITE_FLAG_ZERO_COPY),
- Wait write completion with qio_channel_flush().

Notes:
As some zero copy write implementations work asynchronously, it's
recommended to keep the write buffer untouched until the return of
qio_channel_flush(), to avoid the risk of sending an updated buffer
instead of the buffer state during write.

As io_flush callback is optional, if a subclass does not implement it, then:
- io_flush will return 0 without changing anything.

Also, some functions like qio_channel_writev_full_all() were adapted to
receive a flag parameter. That allows shared code between zero copy and
non-zero copy writev, and also an easier implementation on new flags.

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>
Message-Id: <20220513062836.965425-3-leobras@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2022-05-16 13:56:24 +01:00
..
block-dirty-bitmap.c
block.c block: rename bdrv_invalidate_cache_all, blk_invalidate_cache and test_sync_op_invalidate_cache 2022-03-04 18:14:40 +01:00
block.h
channel.c migration: Postpone releasing MigrationState.hostname 2022-04-21 19:36:46 +01:00
channel.h
colo-failover.c
colo.c COLO: Move some trace code behind qemu_mutex_unlock_iothread() 2021-12-15 10:31:42 +01:00
dirtyrate.c Use g_new() & friends where that makes obvious sense 2022-03-21 15:44:44 +01:00
dirtyrate.h
exec.c
exec.h
fd.c
fd.h
global_state.c
meson.build meson, configure: move RDMA options to meson 2022-04-28 08:52:20 +02:00
migration.c migration: Read state once 2022-04-21 19:36:46 +01:00
migration.h migration: Allow migrate-recover to run multiple times 2022-04-21 19:36:46 +01:00
multifd-zlib.c Use g_new() & friends where that makes obvious sense 2022-03-21 15:44:44 +01:00
multifd-zstd.c multifd: recv side only needs the RAMBlock host address 2022-01-28 15:38:23 +01:00
multifd.c migration: Move migrate_allow_multifd and helpers into migration.c 2022-04-21 19:36:46 +01:00
multifd.h migration: Move migrate_allow_multifd and helpers into migration.c 2022-04-21 19:36:46 +01:00
page_cache.c
page_cache.h
postcopy-ram.c Replace qemu_real_host_page variables with inlined functions 2022-04-06 10:50:38 +02:00
postcopy-ram.h migration: Add postcopy_thread_create() 2022-03-02 18:20:45 +00:00
qemu-file-channel.c
qemu-file-channel.h
qemu-file.c include: Move qemu_madvise() and related #defines to new qemu/madvise.h 2022-02-21 13:30:20 +00:00
qemu-file.h
ram.c migration: Fix operator type 2022-04-21 19:36:46 +01:00
ram.h migration: Export ram_load_postcopy() 2022-04-21 19:36:46 +01:00
rdma.c QIOChannel: Add flags on io_writev and introduce io_flush callback 2022-05-16 13:56:24 +01:00
rdma.h
savevm.c migration: Allow migrate-recover to run multiple times 2022-04-21 19:36:46 +01:00
savevm.h
socket.c
socket.h
target.c
tls.c migration: fix use of TLS PSK credentials with a UNIX socket 2022-04-21 19:36:46 +01:00
tls.h
trace-events migration: Tracepoint change in postcopy-run bottom half 2022-03-02 18:17:56 +00:00
trace.h
vmstate-types.c Move CPU softfloat unions to cpu-float.h 2022-04-06 14:31:43 +02:00
vmstate.c migration: Remove load_state_old and minimum_version_id_old 2022-03-02 18:20:45 +00:00
xbzrle.c
xbzrle.h
yank_functions.c
yank_functions.h