[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH v2 6/8] io: Plumb read flags into qio_channel_read_all_eof
From: |
Fabiano Rosas |
Subject: |
[RFC PATCH v2 6/8] io: Plumb read flags into qio_channel_read_all_eof |
Date: |
Fri, 7 Feb 2025 11:27:56 -0300 |
We want to pass flags into qio_channel_tls_readv() but some functions
along the way don't take a flags argument. Plumb the flags through.
No functional change.
Signed-off-by: Fabiano Rosas <farosas@suse.de>
---
hw/remote/mpqemu-link.c | 2 +-
include/io/channel.h | 6 ++++++
io/channel.c | 13 +++++++++----
migration/multifd.c | 2 +-
tools/i386/qemu-vmsr-helper.c | 3 ++-
util/vhost-user-server.c | 2 +-
6 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/hw/remote/mpqemu-link.c b/hw/remote/mpqemu-link.c
index e25f97680d..49885a1db6 100644
--- a/hw/remote/mpqemu-link.c
+++ b/hw/remote/mpqemu-link.c
@@ -110,7 +110,7 @@ static ssize_t mpqemu_read(QIOChannel *ioc, void *buf,
size_t len, int **fds,
bql_unlock();
}
- ret = qio_channel_readv_full_all_eof(ioc, &iov, 1, fds, nfds, errp);
+ ret = qio_channel_readv_full_all_eof(ioc, &iov, 1, fds, nfds, 0, errp);
if (drop_bql && !iothread && !qemu_in_coroutine()) {
bql_lock();
diff --git a/include/io/channel.h b/include/io/channel.h
index bdf0bca92a..6110f0ffe9 100644
--- a/include/io/channel.h
+++ b/include/io/channel.h
@@ -298,6 +298,7 @@ ssize_t qio_channel_writev_full(QIOChannel *ioc,
* @ioc: the channel object
* @iov: the array of memory regions to read data into
* @niov: the length of the @iov array
+ * @flags: read flags (QIO_CHANNEL_READ_FLAG_*)
* @errp: pointer to a NULL-initialized error object
*
* Read data from the IO channel, storing it in the
@@ -321,6 +322,7 @@ ssize_t qio_channel_writev_full(QIOChannel *ioc,
int coroutine_mixed_fn qio_channel_readv_all_eof(QIOChannel *ioc,
const struct iovec *iov,
size_t niov,
+ int flags,
Error **errp);
/**
@@ -442,6 +444,7 @@ ssize_t qio_channel_write(QIOChannel *ioc,
* @ioc: the channel object
* @buf: the memory region to read data into
* @buflen: the number of bytes to @buf
+ * @flags: read flags (QIO_CHANNEL_READ_FLAG_*)
* @errp: pointer to a NULL-initialized error object
*
* Reads @buflen bytes into @buf, possibly blocking or (if the
@@ -457,6 +460,7 @@ ssize_t qio_channel_write(QIOChannel *ioc,
int coroutine_mixed_fn qio_channel_read_all_eof(QIOChannel *ioc,
char *buf,
size_t buflen,
+ int flags,
Error **errp);
/**
@@ -885,6 +889,7 @@ void qio_channel_set_aio_fd_handler(QIOChannel *ioc,
* @niov: the length of the @iov array
* @fds: an array of file handles to read
* @nfds: number of file handles in @fds
+ * @flags: read flags (QIO_CHANNEL_READ_FLAG_*)
* @errp: pointer to a NULL-initialized error object
*
*
@@ -903,6 +908,7 @@ int coroutine_mixed_fn
qio_channel_readv_full_all_eof(QIOChannel *ioc,
const struct iovec *iov,
size_t niov,
int **fds, size_t *nfds,
+ int flags,
Error **errp);
/**
diff --git a/io/channel.c b/io/channel.c
index e3f17c24a0..61e09202f1 100644
--- a/io/channel.c
+++ b/io/channel.c
@@ -113,9 +113,11 @@ ssize_t qio_channel_writev_full(QIOChannel *ioc,
int coroutine_mixed_fn qio_channel_readv_all_eof(QIOChannel *ioc,
const struct iovec *iov,
size_t niov,
+ int flags,
Error **errp)
{
- return qio_channel_readv_full_all_eof(ioc, iov, niov, NULL, NULL, errp);
+ return qio_channel_readv_full_all_eof(ioc, iov, niov, NULL, NULL, flags,
+ errp);
}
int coroutine_mixed_fn qio_channel_readv_all(QIOChannel *ioc,
@@ -130,6 +132,7 @@ int coroutine_mixed_fn
qio_channel_readv_full_all_eof(QIOChannel *ioc,
const struct iovec *iov,
size_t niov,
int **fds, size_t *nfds,
+ int flags,
Error **errp)
{
int ret = -1;
@@ -155,7 +158,7 @@ int coroutine_mixed_fn
qio_channel_readv_full_all_eof(QIOChannel *ioc,
while ((nlocal_iov > 0) || local_fds) {
ssize_t len;
len = qio_channel_readv_full(ioc, local_iov, nlocal_iov, local_fds,
- local_nfds, 0, errp);
+ local_nfds, flags, errp);
if (len == QIO_CHANNEL_ERR_BLOCK) {
if (qemu_in_coroutine()) {
qio_channel_yield(ioc, G_IO_IN);
@@ -222,7 +225,8 @@ int coroutine_mixed_fn
qio_channel_readv_full_all(QIOChannel *ioc,
int **fds, size_t *nfds,
Error **errp)
{
- int ret = qio_channel_readv_full_all_eof(ioc, iov, niov, fds, nfds, errp);
+ int ret = qio_channel_readv_full_all_eof(ioc, iov, niov, fds, nfds, 0,
+ errp);
if (ret == 0) {
error_setg(errp, "Unexpected end-of-file before all data were read");
@@ -329,10 +333,11 @@ ssize_t qio_channel_write(QIOChannel *ioc,
int coroutine_mixed_fn qio_channel_read_all_eof(QIOChannel *ioc,
char *buf,
size_t buflen,
+ int flags,
Error **errp)
{
struct iovec iov = { .iov_base = buf, .iov_len = buflen };
- return qio_channel_readv_all_eof(ioc, &iov, 1, errp);
+ return qio_channel_readv_all_eof(ioc, &iov, 1, flags, errp);
}
diff --git a/migration/multifd.c b/migration/multifd.c
index b57cad3bb1..b4f82b0893 100644
--- a/migration/multifd.c
+++ b/migration/multifd.c
@@ -1166,7 +1166,7 @@ static void *multifd_recv_thread(void *opaque)
}
ret = qio_channel_read_all_eof(p->c, (void *)p->packet,
- p->packet_len, &local_err);
+ p->packet_len, 0, &local_err);
if (!ret) {
/* EOF */
assert(!local_err);
diff --git a/tools/i386/qemu-vmsr-helper.c b/tools/i386/qemu-vmsr-helper.c
index a35dcb88a3..2a9f1825b7 100644
--- a/tools/i386/qemu-vmsr-helper.c
+++ b/tools/i386/qemu-vmsr-helper.c
@@ -237,7 +237,8 @@ static void coroutine_fn vh_co_entry(void *opaque)
* Only RAPL MSR in rapl-msr-index.h is allowed
*/
r = qio_channel_read_all_eof(QIO_CHANNEL(client->ioc),
- (char *) &request, sizeof(request),
&local_err);
+ (char *) &request, sizeof(request), 0,
+ &local_err);
if (r <= 0) {
break;
}
diff --git a/util/vhost-user-server.c b/util/vhost-user-server.c
index b19229074a..7006328b2e 100644
--- a/util/vhost-user-server.c
+++ b/util/vhost-user-server.c
@@ -190,7 +190,7 @@ vu_message_read(VuDev *vu_dev, int conn_fd, VhostUserMsg
*vmsg)
.iov_len = vmsg->size,
};
if (vmsg->size) {
- rc = qio_channel_readv_all_eof(ioc, &iov_payload, 1, &local_err);
+ rc = qio_channel_readv_all_eof(ioc, &iov_payload, 1, 0, &local_err);
if (rc != 1) {
if (local_err) {
error_report_err(local_err);
--
2.35.3
- [RFC PATCH v2 2/8] io: tls: Add qio_channel_tls_bye, (continued)
- [RFC PATCH v2 4/8] migration: Check migration error after loadvm, Fabiano Rosas, 2025/02/07
- [RFC PATCH v2 5/8] crypto: Remove qcrypto_tls_session_get_handshake_status, Fabiano Rosas, 2025/02/07
- [RFC PATCH v2 6/8] io: Plumb read flags into qio_channel_read_all_eof,
Fabiano Rosas <=
- [RFC PATCH v2 7/8] io: Add a read flag for relaxed EOF, Fabiano Rosas, 2025/02/07
- [RFC PATCH v2 8/8] migration/multifd: Add a compat property for TLS termination, Fabiano Rosas, 2025/02/07
- Re: [RFC PATCH v2 0/8] crypto,io,migration: Add support to gnutls_bye(), Maciej S. Szmigiero, 2025/02/07