[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PULL v4 14/27] io: add qio_channel_readv_full_all_eof & qio_channel
From: |
Daniel P . Berrangé |
Subject: |
Re: [PULL v4 14/27] io: add qio_channel_readv_full_all_eof & qio_channel_readv_full_all helpers |
Date: |
Thu, 11 Feb 2021 15:46:47 +0000 |
User-agent: |
Mutt/1.14.6 (2020-07-11) |
On Thu, Feb 11, 2021 at 04:34:40PM +0100, Max Reitz wrote:
> On 10.02.21 10:26, Stefan Hajnoczi wrote:
> > From: Elena Ufimtseva <elena.ufimtseva@oracle.com>
> >
> > Adds qio_channel_readv_full_all_eof() and qio_channel_readv_full_all()
> > to read both data and FDs. Refactors existing code to use these helpers.
> >
> > Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com>
> > Signed-off-by: John G Johnson <john.g.johnson@oracle.com>
> > Signed-off-by: Jagannathan Raman <jag.raman@oracle.com>
> > Acked-by: Daniel P. Berrangé <berrange@redhat.com>
> > Message-id:
> > b059c4cc0fb741e794d644c144cc21372cad877d.1611938319.git.jag.raman@oracle.com
> > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> > ---
> > include/io/channel.h | 53 +++++++++++++++++++++++
> > io/channel.c | 101 ++++++++++++++++++++++++++++++++++---------
> > 2 files changed, 134 insertions(+), 20 deletions(-)
>
> [...]
>
> > diff --git a/io/channel.c b/io/channel.c
> > index 0d4b8b5160..4555021b62 100644
> > --- a/io/channel.c
> > +++ b/io/channel.c
>
> [...]
>
> > @@ -135,20 +193,23 @@ int qio_channel_readv_all_eof(QIOChannel *ioc,
> > return ret;
> > }
> > -int qio_channel_readv_all(QIOChannel *ioc,
> > - const struct iovec *iov,
> > - size_t niov,
> > - Error **errp)
> > +int qio_channel_readv_full_all(QIOChannel *ioc,
> > + const struct iovec *iov,
> > + size_t niov,
> > + int **fds, size_t *nfds,
> > + Error **errp)
> > {
> > - int ret = qio_channel_readv_all_eof(ioc, iov, niov, errp);
> > + int ret = qio_channel_readv_full_all_eof(ioc, iov, niov, fds, nfds,
> > errp);
> > if (ret == 0) {
> > - ret = -1;
> > - error_setg(errp,
> > - "Unexpected end-of-file before all bytes were read");
> > - } else if (ret == 1) {
> > - ret = 0;
> > + error_prepend(errp,
> > + "Unexpected end-of-file before all data were read.");
> > + return -1;
>
> This change breaks iotest 083 (i.e., it segfaults), because
> qio_channel_readv_full_all_eof() doesn’t set *errp when it returns 0, so
> there is no error to prepend.
Opps, yes, this needs to be error_setg() not error_prepend()
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
- [PULL v4 06/27] get_maintainer: update repo URL to GitLab, (continued)
- [PULL v4 06/27] get_maintainer: update repo URL to GitLab, Stefan Hajnoczi, 2021/02/10
- [PULL v4 07/27] multi-process: add the concept description to docs/devel/qemu-multiprocess, Stefan Hajnoczi, 2021/02/10
- [PULL v4 08/27] multi-process: add configure and usage information, Stefan Hajnoczi, 2021/02/10
- [PULL v4 09/27] memory: alloc RAM from file at offset, Stefan Hajnoczi, 2021/02/10
- [PULL v4 10/27] multi-process: Add config option for multi-process QEMU, Stefan Hajnoczi, 2021/02/10
- [PULL v4 11/27] multi-process: setup PCI host bridge for remote device, Stefan Hajnoczi, 2021/02/10
- [PULL v4 12/27] multi-process: setup a machine object for remote device process, Stefan Hajnoczi, 2021/02/10
- [PULL v4 13/27] io: add qio_channel_writev_full_all helper, Stefan Hajnoczi, 2021/02/10
- [PULL v4 14/27] io: add qio_channel_readv_full_all_eof & qio_channel_readv_full_all helpers, Stefan Hajnoczi, 2021/02/10
- [PULL v4 15/27] multi-process: define MPQemuMsg format and transmission functions, Stefan Hajnoczi, 2021/02/10
- [PULL v4 16/27] multi-process: Initialize message handler in remote device, Stefan Hajnoczi, 2021/02/10
- [PULL v4 18/27] multi-process: setup memory manager for remote device, Stefan Hajnoczi, 2021/02/10
- [PULL v4 17/27] multi-process: Associate fd of a PCIDevice with its object, Stefan Hajnoczi, 2021/02/10
- [PULL v4 19/27] multi-process: introduce proxy object, Stefan Hajnoczi, 2021/02/10
- [PULL v4 20/27] multi-process: add proxy communication functions, Stefan Hajnoczi, 2021/02/10
- [PULL v4 21/27] multi-process: Forward PCI config space acceses to the remote process, Stefan Hajnoczi, 2021/02/10
- [PULL v4 22/27] multi-process: PCI BAR read/write handling for proxy & remote endpoints, Stefan Hajnoczi, 2021/02/10
- [PULL v4 23/27] multi-process: Synchronize remote memory, Stefan Hajnoczi, 2021/02/10