From: Oleg Nesterov <oleg@redhat.com>
To: Manfred Spraul <manfred@colorfullife.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
WangYuli <wangyuli@uniontech.com>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Christian Brauner <brauner@kernel.org>
Subject: Re: [RESEND PATCH] fs/pipe: Introduce a check to skip sleeping processes during pipe read/write
Date: Sun, 29 Dec 2024 14:13:38 +0100 [thread overview]
Message-ID: <20241229131338.GD27491@redhat.com> (raw)
In-Reply-To: <20241229130543.GC27491@redhat.com>
Sorry for the noise...
and currently this is fine. But if we want to add the wq_has_sleeper()
checks into fs/pipe.c then pipe_poll() needs smp_mb() after it calls
poll_wait().
Agreed?
On 12/29, Oleg Nesterov wrote:
>
> On 12/29, Manfred Spraul wrote:
> >
> > >I think that your patch (and the original patch from WangYuli) has the same
> > >proble with pipe_poll()->poll_wait()->__pollwait().
> >
> > What is the memory barrier for pipe_poll()?
> >
> > There is poll_wait()->__pollwait()->add_wait_queue()->spin_unlock(). thus
> > only store_release.
> >
> > And then READ_ONCE(), i.e. no memory barrier.
> >
> > Thus the CPU would be free to load pipe->head and pipe->tail before adding
> > the entry to the poll table.
> >
> > Correct?
>
> Yes, this was my thinking.
>
> See also my initial reply to WangYuli
> https://lore.kernel.org/all/20241226160007.GA11118@redhat.com/
>
> Do you agree?
>
> Oleg.
next prev parent reply other threads:[~2024-12-29 13:14 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-25 9:42 [RESEND PATCH] fs/pipe: Introduce a check to skip sleeping processes during pipe read/write WangYuli
2024-12-25 13:30 ` Andy Shevchenko
2024-12-25 13:53 ` Kent Overstreet
2024-12-25 16:04 ` Mateusz Guzik
2024-12-25 16:32 ` Kent Overstreet
2024-12-25 17:22 ` Mateusz Guzik
2024-12-25 17:41 ` Kent Overstreet
2024-12-25 15:42 ` WangYuli
2024-12-25 16:00 ` Willy Tarreau
2024-12-25 16:32 ` WangYuli
2024-12-25 16:56 ` Willy Tarreau
2024-12-26 16:00 ` Oleg Nesterov
2024-12-26 19:02 ` Linus Torvalds
2024-12-26 20:11 ` Oleg Nesterov
2024-12-26 20:29 ` Linus Torvalds
2024-12-26 20:57 ` Oleg Nesterov
2024-12-27 15:54 ` Oleg Nesterov
2024-12-27 16:43 ` Oleg Nesterov
2024-12-27 18:39 ` Manfred Spraul
2024-12-28 14:32 ` Oleg Nesterov
2024-12-28 15:22 ` Oleg Nesterov
2024-12-28 16:32 ` Oleg Nesterov
2024-12-28 18:53 ` Manfred Spraul
2024-12-29 11:54 ` Oleg Nesterov
2024-12-28 16:45 ` Manfred Spraul
2024-12-29 11:57 ` Oleg Nesterov
2024-12-29 12:41 ` Manfred Spraul
2024-12-29 13:05 ` Oleg Nesterov
2024-12-29 13:13 ` Oleg Nesterov [this message]
2024-12-29 19:54 ` Manfred Spraul
2024-12-30 15:38 ` Oleg Nesterov
2024-12-31 11:14 ` Manfred Spraul
2024-12-31 19:38 ` Linus Torvalds
2024-12-31 20:24 ` Oleg Nesterov
2024-12-31 22:31 ` Linus Torvalds
2025-01-02 13:57 ` Oleg Nesterov
2025-01-04 21:15 ` RFC: Checkpatch: Introduce list of functions that need memory barriers Manfred Spraul
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=20241229131338.GD27491@redhat.com \
--to=oleg@redhat.com \
--cc=brauner@kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=manfred@colorfullife.com \
--cc=torvalds@linux-foundation.org \
--cc=wangyuli@uniontech.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 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.