public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
From: Stefano Brivio <sbrivio@redhat.com>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: passt-dev@passt.top
Subject: Re: [PATCH 0/6] RFC: Clean up tap-side event handling
Date: Thu, 5 Sep 2024 10:32:38 +0200	[thread overview]
Message-ID: <20240905103238.69431d8f@elisabeth> (raw)
In-Reply-To: <Ztj8wg8SvIvalQ4A@zatzit.fritz.box>

On Thu, 5 Sep 2024 10:35:14 +1000
David Gibson <david@gibson.dropbear.id.au> wrote:

> On Wed, Sep 04, 2024 at 07:19:22PM +0200, Stefano Brivio wrote:
> > On Wed, 4 Sep 2024 13:17:53 +1000
> > David Gibson <david@gibson.dropbear.id.au> wrote:
> >   
> > > On Tue, Sep 03, 2024 at 09:25:54PM +0200, Stefano Brivio wrote:  
> > > > On Tue,  3 Sep 2024 22:02:29 +1000
> > > > David Gibson <david@gibson.dropbear.id.au> wrote:
> > > >     
> > > > > This is a draft patch working towards adding EPOLLOUT handling to the
> > > > > tap code, which could then be used to "unstick" flows which have
> > > > > unsent data from the socket side.  For now that's just a stub, but
> > > > > makes what I think are some worthwhile cleanups to the tap side event
> > > > > handling in the meantime.    
> > > > 
> > > > Except for the issue in 3/6 and nits elsewhere, it all makes sense and
> > > > tap-side EPOLLOUT handling is definitely going to be an improvement.
> > > > 
> > > > I wonder if it's the right moment for this kind of series, though, in
> > > > terms of future bisections, as long as we're grappling with
> > > > https://github.com/containers/podman/issues/23686 and
> > > > https://bugs.passt.top/show_bug.cgi?id=94. Assuming, of course, that
> > > > this series doesn't fix anything.    
> > > 
> > > I don't think this series will fix anything as it stands.  It is,
> > > indirectly, aimed at addressing bug 94.  I'm struggling to figure out
> > > what to do with bug 94, because I find it almost impossible to reason
> > > about the current event masks in TCP.  
> > 
> > I don't see at the moment anything indicating TCP issues other than the
> > one you addressed with your tentative debug patch at:
> > 
> >   https://passt.top/passt/commit/?h=podman23686&id=026fb71d1dde60135d95741552906fd5320384bc
> > 
> > Given that, with that patch, we had at least another report of event
> > storms, this time on UDP, that is, the one from:
> > 
> >   https://github.com/containers/podman/issues/23686#issuecomment-2324945010
> > 
> > I shared this other one on top:
> > 
> >   https://passt.top/passt/commit/?h=podman23686&id=0c6c20dee5c24bd324834a99f409ad43c50812ae  
> 
> Ah, nice.
> 
> > > I'd really like to simplify
> > > them so it's clearer what's correct and not and I think the most
> > > obvious path to doing so is using EPOLLET all the time.  That requires
> > > some sort of kick when the tap is ready to accept more data, hence
> > > this series as a prerequisite.  
> > 
> > Sure, it's going to be simpler and more robust, but on the other hand
> > we wouldn't notice these kind of issues.  
> 
> Uh.. I'm confused.  In what way would we not notice issues, other than
> the issues not existing which.. would be good, right?

Right now, we have a condition where we fail to handle EPOLLRDHUP
before an outbound connection is established, see
https://github.com/containers/podman/issues/23686#issuecomment-233023742,
and we end up in a tight event processing loop.

I guess what we're missing in tcp_sock_handler() is clear (we should
orderly close the connection), but the tight loop didn't happen on
2024_06_24.1ee2eca (I'm bisecting right now) and we don't know why it
didn't.

If we set EPOLLET, we won't see that anymore, because the EPOLLRDHUP
event is reported just once, but that doesn't mean we solved this.

-- 
Stefano


  reply	other threads:[~2024-09-05  8:32 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-03 12:02 [PATCH 0/6] RFC: Clean up tap-side event handling David Gibson
2024-09-03 12:02 ` [PATCH 1/6] tap: Split out handling of EPOLLIN events David Gibson
2024-09-03 19:25   ` Stefano Brivio
2024-09-04  1:17     ` David Gibson
2024-09-03 12:02 ` [PATCH 2/6] tap: Improve handling of EINTR in tap_passt_input() David Gibson
2024-09-03 19:25   ` Stefano Brivio
2024-09-04  1:30     ` David Gibson
2024-09-03 12:02 ` [PATCH 3/6] tap: Restructure in tap_pasta_input() David Gibson
2024-09-03 19:25   ` Stefano Brivio
2024-09-04  1:33     ` David Gibson
2024-09-03 12:02 ` [PATCH 4/6] tap: Don't risk truncating frames on full buffer " David Gibson
2024-09-03 19:25   ` Stefano Brivio
2024-09-04  1:33     ` David Gibson
2024-09-03 12:02 ` [PATCH 5/6] tap: Re-introduce EPOLLET for tap connections David Gibson
2024-09-03 19:25   ` Stefano Brivio
2024-09-04  1:36     ` David Gibson
2024-09-03 12:02 ` [PATCH 6/6] tap: Stub EPOLLOUT handling David Gibson
2024-09-03 19:25 ` [PATCH 0/6] RFC: Clean up tap-side event handling Stefano Brivio
2024-09-04  3:17   ` David Gibson
2024-09-04 17:19     ` Stefano Brivio
2024-09-05  0:35       ` David Gibson
2024-09-05  8:32         ` Stefano Brivio [this message]
2024-09-05 11:33           ` Stefano Brivio

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=20240905103238.69431d8f@elisabeth \
    --to=sbrivio@redhat.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=passt-dev@passt.top \
    /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.
Code repositories for project(s) associated with this public inbox

	https://passt.top/passt

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 IMAP folder(s).