From: Peter Xu <peterx@redhat.com>
To: Leonardo Bras <leobras@redhat.com>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>,
"Juan Quintela" <quintela@redhat.com>,
qemu-devel@nongnu.org, "Jason Wang" <jasowang@redhat.com>,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>,
"Eric Blake" <eblake@redhat.com>
Subject: Re: [PATCH v4 2/3] QIOChannelSocket: Implement io_writev_zerocopy & io_flush_zerocopy for CONFIG_LINUX
Date: Wed, 13 Oct 2021 14:18:12 +0800 [thread overview]
Message-ID: <YWZ6JIstNuvuOWtt@t490s> (raw)
In-Reply-To: <20211009075612.230283-3-leobras@redhat.com>
On Sat, Oct 09, 2021 at 04:56:12AM -0300, Leonardo Bras wrote:
> @@ -154,6 +161,17 @@ int qio_channel_socket_connect_sync(QIOChannelSocket *ioc,
> return -1;
> }
>
> +#ifdef CONFIG_LINUX
> + ret = qemu_setsockopt(fd, SOL_SOCKET, SO_ZEROCOPY, &v, sizeof(v));
> + if (ret < 0) {
> + /* Zerocopy not available on host */
> + return 0;
> + }
> +
> + qio_channel_set_feature(QIO_CHANNEL(ioc),
> + QIO_CHANNEL_FEATURE_WRITE_ZEROCOPY);
This is okay I think, but looks a bit weird. Maybe nicer to be written as:
#if LINUX
ret = setsockopt();
if (ret == 0) {
qio_channel_set_feature(...);
}
#endif
return 0;
?
> +#endif
> +
> return 0;
> }
[...]
> +static ssize_t qio_channel_socket_writev_zerocopy(QIOChannel *ioc,
> + const struct iovec *iov,
> + size_t niov,
> + Error **errp)
> +{
> + QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc);
> + ssize_t ret;
> +
> + ret = qio_channel_socket_writev_flags(ioc, iov, niov, NULL, 0,
> + MSG_ZEROCOPY, errp);
> + if (ret == QIO_CHANNEL_ERR_NOBUFS) {
> + if (errp && *errp) {
Hmm this seems wrong, *errp should be NULL in most cases, meanwhile I think
error_setg*() takes care of errp==NULL too, so maybe we can drop this?
> + error_setg_errno(errp, errno,
> + "Process can't lock enough memory for using MSG_ZEROCOPY");
> + }
> + return -1;
> + }
> +
> + sioc->zerocopy_queued++;
> + return ret;
> +}
--
Peter Xu
next prev parent reply other threads:[~2021-10-13 6:19 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-09 7:56 [PATCH v4 0/3] MSG_ZEROCOPY for multifd Leonardo Bras
2021-10-09 7:56 ` [PATCH v4 1/3] QIOChannel: Add io_writev_zerocopy & io_flush_zerocopy callbacks Leonardo Bras
2021-10-11 19:17 ` Eric Blake
2021-10-11 19:38 ` Leonardo Bras Soares Passos
2021-10-11 20:45 ` Eric Blake
2021-10-11 20:59 ` Leonardo Bras Soares Passos
2021-10-13 6:07 ` Peter Xu
2021-10-13 6:32 ` Peter Xu
2021-10-27 6:07 ` Leonardo Bras Soares Passos
2021-10-27 6:15 ` Peter Xu
2021-10-27 6:31 ` Leonardo Bras Soares Passos
2021-10-09 7:56 ` [PATCH v4 2/3] QIOChannelSocket: Implement io_writev_zerocopy & io_flush_zerocopy for CONFIG_LINUX Leonardo Bras
2021-10-11 19:27 ` Eric Blake
2021-10-11 19:44 ` Leonardo Bras Soares Passos
2021-10-13 6:18 ` Peter Xu [this message]
2021-10-27 6:30 ` Leonardo Bras Soares Passos
2021-11-02 13:13 ` Juan Quintela
2021-11-03 20:50 ` Leonardo Bras Soares Passos
2021-10-09 7:56 ` [PATCH v4 3/3] multifd: Implement zerocopy write in multifd migration (multifd-zerocopy) Leonardo Bras
2021-10-11 19:31 ` Eric Blake
2021-10-11 19:56 ` Leonardo Bras Soares Passos
2021-10-12 5:53 ` Markus Armbruster
2021-10-28 1:56 ` Leonardo Bras Soares Passos
2021-10-28 4:30 ` Markus Armbruster
2021-10-28 4:37 ` Leonardo Bras Soares Passos
2021-10-13 6:23 ` Peter Xu
2021-10-27 6:47 ` Leonardo Bras Soares Passos
2021-10-27 7:06 ` Peter Xu
2021-10-13 6:26 ` Peter Xu
2021-10-27 6:50 ` Leonardo Bras Soares Passos
2021-11-02 12:32 ` Juan Quintela
2021-11-03 21:29 ` Leonardo Bras Soares Passos
2021-11-03 23:24 ` Juan Quintela
2021-11-04 3:43 ` Leonardo Bras Soares Passos
2022-04-14 4:00 ` Leonardo Bras Soares Passos
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YWZ6JIstNuvuOWtt@t490s \
--to=peterx@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=dgilbert@redhat.com \
--cc=eblake@redhat.com \
--cc=jasowang@redhat.com \
--cc=leobras@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).