All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: Maxim Levitsky <mlevitsk@redhat.com>,
	Max Reitz <mreitz@redhat.com>,
	qemu-block@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
	qemu-stable@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [Qemu-block] [PATCH v2 3/7] curl: Check completion in curl_multi_do()
Date: Tue, 10 Sep 2019 21:16:59 -0400	[thread overview]
Message-ID: <8df6a60c-1930-c538-de88-20ffac45a127@redhat.com> (raw)
In-Reply-To: <781db018f83aa375b9a7476028c7ef8c4c24d848.camel@redhat.com>



On 9/10/19 12:11 PM, Maxim Levitsky wrote:
> On Tue, 2019-09-10 at 14:41 +0200, Max Reitz wrote:
>> While it is more likely that transfers complete after some file
>> descriptor has data ready to read, we probably should not rely on it.
>> Better be safe than sorry and call curl_multi_check_completion() in
>> curl_multi_do(), too, just like it is done in curl_multi_read().
>>
>> With this change, curl_multi_do() and curl_multi_read() are actually the
>> same, so drop curl_multi_read() and use curl_multi_do() as the sole FD
>> handler.
> 
> I understand the reasoning, but I still a bit worry that this
> could paper over some bug/race in the future.
> If curl asks us only to deal with write, that would mean
> that it doesn't expect any data to be received.
> 
> Do you by a chance have an example, of this patch
> affecting the code? Maybe when a unexpected error reply
> is received from the server?
> 
> I don't really know the CURL library, so I probably missed
> something important.
> 
> Other than that,
> Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
> 

In this case, it's because I had some doubts in V1 about when we call
the post-completion cleanup code. It didn't look obvious at a glance.

This just makes it simpler.

I don't think that by checking *more* things we're going to paper over
some race condition -- it's the opposite. If anything, this will explode
sooner rather than later.

So I think it's OK, naturally.

Reviewed-by: John Snow <jsnow@redhat.com>


  reply	other threads:[~2019-09-11  1:18 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-10 12:41 [Qemu-devel] [PATCH v2 0/7] block/curl: Fix hang and potential crash Max Reitz
2019-09-10 12:41 ` [Qemu-devel] [PATCH v2 1/7] curl: Keep pointer to the CURLState in CURLSocket Max Reitz
2019-09-10 16:11   ` [Qemu-devel] [Qemu-block] " Maxim Levitsky
2019-09-10 12:41 ` [Qemu-devel] [PATCH v2 2/7] curl: Keep *socket until the end of curl_sock_cb() Max Reitz
2019-09-10 16:11   ` [Qemu-devel] [Qemu-block] " Maxim Levitsky
2019-09-10 21:19   ` [Qemu-devel] " John Snow
2019-09-10 12:41 ` [Qemu-devel] [PATCH v2 3/7] curl: Check completion in curl_multi_do() Max Reitz
2019-09-10 16:11   ` [Qemu-devel] [Qemu-block] " Maxim Levitsky
2019-09-11  1:16     ` John Snow [this message]
2019-09-11  6:51     ` Max Reitz
2019-09-10 12:41 ` [Qemu-devel] [PATCH v2 4/7] curl: Pass CURLSocket to curl_multi_do() Max Reitz
2019-09-10 16:12   ` [Qemu-devel] [Qemu-block] " Maxim Levitsky
2019-09-10 12:41 ` [Qemu-devel] [PATCH v2 5/7] curl: Report only ready sockets Max Reitz
2019-09-10 16:12   ` [Qemu-devel] [Qemu-block] " Maxim Levitsky
2019-09-10 12:41 ` [Qemu-devel] [PATCH v2 6/7] curl: Handle success in multi_check_completion Max Reitz
2019-09-10 16:13   ` [Qemu-devel] [Qemu-block] " Maxim Levitsky
2019-09-13 11:20     ` Max Reitz
2019-09-13 11:47       ` Maxim Levitsky
2019-09-10 12:41 ` [Qemu-devel] [PATCH v2 7/7] curl: Check curl_multi_add_handle()'s return code Max Reitz
2019-09-10 16:13   ` [Qemu-devel] [Qemu-block] " Maxim Levitsky
2019-09-11  1:23 ` [Qemu-devel] [PATCH v2 0/7] block/curl: Fix hang and potential crash John Snow
2019-09-13 11:48 ` Max Reitz

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=8df6a60c-1930-c538-de88-20ffac45a127@redhat.com \
    --to=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mlevitsk@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-stable@nongnu.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.