[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: |
Jag Raman |
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:48:02 +0000 |
> On Feb 11, 2021, at 10:46 AM, Daniel P. Berrangé <berrange@redhat.com> wrote:
>
> 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()
Hi Max & Daniel,
We will send a patch shortly to address this issue.
Thank you very much!
>
>
> 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 07/27] multi-process: add the concept description to docs/devel/qemu-multiprocess, (continued)
- [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
- [PULL v4 24/27] multi-process: create IOHUB object to handle irq, Stefan Hajnoczi, 2021/02/10