qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Li Zhang <lizhang@suse.de>
To: quintela@redhat.com
Cc: qemu-devel@nongnu.org, dgilbert@redhat.com, cfontana@suse.de
Subject: Re: [PATCH v2 1/1] multifd: Remove some redundant code
Date: Thu, 27 Jan 2022 19:31:51 +0100	[thread overview]
Message-ID: <fc7232e7-65c2-15d5-cb0c-68079ad119ab@suse.de> (raw)
In-Reply-To: <d3563b01-6855-078a-4909-271c7c612dc0@suse.de>

On 1/27/22 7:11 PM, Li Zhang wrote:
> On 1/27/22 10:53 AM, Juan Quintela wrote:
>> Li Zhang <lizhang@suse.de> wrote:
>>> Clean up some unnecessary code
>>>
>>> Signed-off-by: Li Zhang <lizhang@suse.de>
>>
>> Hi
>>
>>> ---
>>>   migration/multifd.c | 12 +++---------
>>>   1 file changed, 3 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/migration/multifd.c b/migration/multifd.c
>>> index 3242f688e5..212be1ed04 100644
>>> --- a/migration/multifd.c
>>> +++ b/migration/multifd.c
>>> @@ -854,19 +854,16 @@ static void 
>>> multifd_new_send_channel_async(QIOTask *task, gpointer opaque)
>>>       Error *local_err = NULL;
>>>       trace_multifd_new_send_channel_async(p->id);
>>> -    if (qio_task_propagate_error(task, &local_err)) {
>>> -        goto cleanup;
>>> -    } else {
>>> +    if (!qio_task_propagate_error(task, &local_err)) {
>>>           p->c = QIO_CHANNEL(sioc);
>>>           qio_channel_set_delay(p->c, false);
>>>           p->running = true;
>>>           if (!multifd_channel_connect(p, sioc, local_err)) {
>>> -            goto cleanup;
>>> +            multifd_new_send_channel_cleanup(p, sioc, local_err);
>>>           }
>>>           return;
>>>       }
>>> -cleanup:
>>>       multifd_new_send_channel_cleanup(p, sioc, local_err);
>>>   }
>>
>> Once there, why are we duplicating the call to
>> multifd_new_send_channel_cleanup()
>>
>> What about:
>>
>> static void multifd_new_send_channel_async(QIOTask *task, gpointer 
>> opaque)
>> {
>>      MultiFDSendParams *p = opaque;
>>      QIOChannel *sioc = QIO_CHANNEL(qio_task_get_source(task));
>>      Error *local_err = NULL;
>>
>>      trace_multifd_new_send_channel_async(p->id);
>>      if (!qio_task_propagate_error(task, &local_err)) {
>>          p->c = QIO_CHANNEL(sioc);
>>          qio_channel_set_delay(p->c, false);
>>          p->running = true;
>>          if (multifd_channel_connect(p, sioc, local_err)) {
>>              return;
>>          }
>>      }
>>      multifd_new_send_channel_cleanup(p, sioc, local_err);
>> }
>>
>> What do you think?
> 
> Hi Juan,
> 
> Sorry about the code. I check it again, it still needs to cleaup
> if it fails on multifd_channel_connect(). I just remove the goto
> and put the cleanup function there.
> 
> The second cleanup is called if (qio_task_propagate_error(task, 
> &local_err)) ), otherwise, it won't cleanup and return normally.
> 
> If removing the first cleanup and move the return, the logic is not 
> right.  It is that: when no error happens, it still calls the second
> cleanup.
> 

I checked source code from the qemu.
This condition is not right,
if (!multifd_channel_connect(p, sioc, local_err)) is not right.
The function multifd_channel_connect return true if no error.

The mail is right. :)

> 
> Thanks
> Li
>>
>> Later, Juan.
>>
>>
>>> @@ -1078,10 +1075,7 @@ static void *multifd_recv_thread(void *opaque)
>>>           ret = qio_channel_read_all_eof(p->c, (void *)p->packet,
>>>                                          p->packet_len, &local_err);
>>> -        if (ret == 0) {   /* EOF */
>>> -            break;
>>> -        }
>>> -        if (ret == -1) {   /* Error */
>>> +        if (ret == 0 || ret == -1) {   /* 0: EOF  -1: Error */
>>>               break;
>>>           }
>>
>> This bit is ok.
>>
> 



  reply	other threads:[~2022-01-27 18:36 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-17 10:12 [PATCH v2 1/1] multifd: Remove some redundant code Li Zhang
2022-01-06 10:06 ` Li Zhang
2022-01-27  9:53 ` Juan Quintela
2022-01-27  9:56   ` Li Zhang
2022-01-27 18:11   ` Li Zhang
2022-01-27 18:31     ` Li Zhang [this message]
2022-01-27 19:10       ` Li Zhang

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=fc7232e7-65c2-15d5-cb0c-68079ad119ab@suse.de \
    --to=lizhang@suse.de \
    --cc=cfontana@suse.de \
    --cc=dgilbert@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).