[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v7 1/5] QIOChannel: Add flags on io_writev and introduce io_f
From: |
Peter Xu |
Subject: |
Re: [PATCH v7 1/5] QIOChannel: Add flags on io_writev and introduce io_flush callback |
Date: |
Thu, 13 Jan 2022 14:28:20 +0800 |
On Thu, Jan 06, 2022 at 07:13:38PM -0300, Leonardo Bras wrote:
> diff --git a/io/channel.c b/io/channel.c
> index e8b019dc36..904855e16e 100644
> --- a/io/channel.c
> +++ b/io/channel.c
> @@ -67,12 +67,13 @@ ssize_t qio_channel_readv_full(QIOChannel *ioc,
> }
>
>
> -ssize_t qio_channel_writev_full(QIOChannel *ioc,
> - const struct iovec *iov,
> - size_t niov,
> - int *fds,
> - size_t nfds,
> - Error **errp)
> +ssize_t qio_channel_writev_full_flags(QIOChannel *ioc,
> + const struct iovec *iov,
> + size_t niov,
> + int *fds,
> + size_t nfds,
> + int flags,
> + Error **errp)
> {
> QIOChannelClass *klass = QIO_CHANNEL_GET_CLASS(ioc);
>
> @@ -83,7 +84,7 @@ ssize_t qio_channel_writev_full(QIOChannel *ioc,
> return -1;
> }
Should we better also check QIO_CHANNEL_FEATURE_WRITE_ZERO_COPY here when
QIO_CHANNEL_WRITE_FLAG_ZERO_COPY is set? Just like what we do with:
if ((fds || nfds) &&
!qio_channel_has_feature(ioc, QIO_CHANNEL_FEATURE_FD_PASS)) {
error_setg_errno(errp, EINVAL,
"Channel does not support file descriptor passing");
return -1;
}
I still think it's better to have the caller be crystal clear when to use
zero_copy feature because it has implication on buffer lifetime.
I might have commented similar things before, but I have missed a few versions
so I could also have missed some previous discussions..
>
> - return klass->io_writev(ioc, iov, niov, fds, nfds, errp);
> + return klass->io_writev(ioc, iov, niov, fds, nfds, flags, errp);
> }
--
Peter Xu
[PATCH v7 3/5] migration: Add zero-copy parameter for QMP/HMP for Linux, Leonardo Bras, 2022/01/06