da38d5c28e
- kvm-tests-avocado-update-aarch64_virt-test-to-exercise-c.patch [bz#2060839] - kvm-RHEL-only-tests-avocado-Switch-aarch64-tests-from-a5.patch [bz#2060839] - kvm-RHEL-only-AArch64-Drop-unsupported-CPU-types.patch [bz#2060839] - kvm-target-i386-deprecate-CPUs-older-than-x86_64-v2-ABI.patch [bz#2060839] - kvm-target-s390x-deprecate-CPUs-older-than-z14.patch [bz#2060839] - kvm-target-arm-deprecate-named-CPU-models.patch [bz#2060839] - kvm-meson.build-Fix-docker-test-build-alpine-when-includ.patch [bz#1968509] - kvm-QIOChannel-Add-flags-on-io_writev-and-introduce-io_f.patch [bz#1968509] - kvm-QIOChannelSocket-Implement-io_writev-zero-copy-flag-.patch [bz#1968509] - kvm-migration-Add-zero-copy-send-parameter-for-QMP-HMP-f.patch [bz#1968509] - kvm-migration-Add-migrate_use_tls-helper.patch [bz#1968509] - kvm-multifd-multifd_send_sync_main-now-returns-negative-.patch [bz#1968509] - kvm-multifd-Send-header-packet-without-flags-if-zero-cop.patch [bz#1968509] - kvm-multifd-Implement-zero-copy-write-in-multifd-migrati.patch [bz#1968509] - kvm-QIOChannelSocket-Introduce-assert-and-reduce-ifdefs-.patch [bz#1968509] - kvm-QIOChannelSocket-Fix-zero-copy-send-so-socket-flush-.patch [bz#1968509] - kvm-migration-Change-zero_copy_send-from-migration-param.patch [bz#1968509] - kvm-migration-Allow-migrate-recover-to-run-multiple-time.patch [bz#2096143] - Resolves: bz#2060839 (Consider deprecating CPU models like "kvm64" / "qemu64" on RHEL 9) - Resolves: bz#1968509 (Use MSG_ZEROCOPY on QEMU Live Migration) - Resolves: bz#2096143 (The migration port is not released if use it again for recovering postcopy migration)
83 lines
2.8 KiB
Diff
83 lines
2.8 KiB
Diff
From 60bf942a58db12c821f2a6a49e2e0b04b99bec30 Mon Sep 17 00:00:00 2001
|
|
From: Leonardo Bras <leobras@redhat.com>
|
|
Date: Mon, 20 Jun 2022 02:39:42 -0300
|
|
Subject: [PATCH 15/18] QIOChannelSocket: Introduce assert and reduce ifdefs to
|
|
improve readability
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
RH-Author: Leonardo Brás <leobras@redhat.com>
|
|
RH-MergeRequest: 95: MSG_ZEROCOPY + Multifd
|
|
RH-Commit: [9/11] eaa02d68301852ccc98bdacc7387d8d03be1cb05 (LeoBras/centos-qemu-kvm)
|
|
RH-Bugzilla: 1968509
|
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
RH-Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
|
RH-Acked-by: Peter Xu <peterx@redhat.com>
|
|
|
|
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
|
|
(cherry picked from commit 803ca43e4c7fcf32f9f68c118301ccd0c83ece3f)
|
|
Signed-off-by: Leonardo Bras <leobras@redhat.com>
|
|
---
|
|
io/channel-socket.c | 14 +++++++++-----
|
|
1 file changed, 9 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/io/channel-socket.c b/io/channel-socket.c
|
|
index fbd2214d20..7490e5943d 100644
|
|
--- a/io/channel-socket.c
|
|
+++ b/io/channel-socket.c
|
|
@@ -579,11 +579,17 @@ static ssize_t qio_channel_socket_writev(QIOChannel *ioc,
|
|
memcpy(CMSG_DATA(cmsg), fds, fdsize);
|
|
}
|
|
|
|
-#ifdef QEMU_MSG_ZEROCOPY
|
|
if (flags & QIO_CHANNEL_WRITE_FLAG_ZERO_COPY) {
|
|
+#ifdef QEMU_MSG_ZEROCOPY
|
|
sflags = MSG_ZEROCOPY;
|
|
- }
|
|
+#else
|
|
+ /*
|
|
+ * We expect QIOChannel class entry point to have
|
|
+ * blocked this code path already
|
|
+ */
|
|
+ g_assert_not_reached();
|
|
#endif
|
|
+ }
|
|
|
|
retry:
|
|
ret = sendmsg(sioc->fd, &msg, sflags);
|
|
@@ -593,15 +599,13 @@ static ssize_t qio_channel_socket_writev(QIOChannel *ioc,
|
|
return QIO_CHANNEL_ERR_BLOCK;
|
|
case EINTR:
|
|
goto retry;
|
|
-#ifdef QEMU_MSG_ZEROCOPY
|
|
case ENOBUFS:
|
|
- if (sflags & MSG_ZEROCOPY) {
|
|
+ if (flags & QIO_CHANNEL_WRITE_FLAG_ZERO_COPY) {
|
|
error_setg_errno(errp, errno,
|
|
"Process can't lock enough memory for using MSG_ZEROCOPY");
|
|
return -1;
|
|
}
|
|
break;
|
|
-#endif
|
|
}
|
|
|
|
error_setg_errno(errp, errno,
|
|
--
|
|
2.35.3
|
|
|