From: Peter Zijlstra <peterz@infradead.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Oleg Nesterov <oleg@redhat.com>, Nick Piggin <npiggin@gmail.com>,
Mel Gorman <mgorman@techsingularity.net>, Jan Kara <jack@suse.cz>,
Davidlohr Bueso <dave@stgolabs.net>,
Andi Kleen <ak@linux.intel.com>,
Lukas Czerner <lczerner@redhat.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: wait_on_page_bit_common(TASK_KILLABLE, EXCLUSIVE) can miss wakeup?
Date: Sun, 28 Jun 2020 15:18:13 +0200 [thread overview]
Message-ID: <20200628131813.GM4817@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <CAHk-=whvVWNXPJq1k566zn4SfXAifXtiA7T+7JFweR3rQ0nc9A@mail.gmail.com>
On Sat, Jun 27, 2020 at 10:39:20PM -0700, Linus Torvalds wrote:
> Ugh.
Heh, I was afraid of that..
> So how about the attached trivial two-liner? We solve the problem by
> simply marking ourselves TASK_RUNNING, which means that we won't be
> counted as an exclusive wakeup.
>
> Ok, so the "one" line to do that is that is actually two lines:
>
> __set_current_state(TASK_RUNNING);
> smp_mb__before_atomic();
>
> and there's four lines of comments to go with it, but it really is
> very simple: if we do that before we do the test_and_set_bit_lock(),
> no wakeups will be lost, because we won't be sleeping for that wakeup.
>
> I'm not entirely happy about that "smp_mb__before_atomic()". I think
> it's right in practice that test_and_set_bit_lock() (when it actually
> does a write) has at LEAST atomic seqmantics, so I think it's good.
> But it's not pretty.
Hurm... yes. I think I agree this solves it. However... the wait loop is
'weird'. It isn't shaped like our other loops.
On the one hand, who cares, that's just my OCD, on the other hand, it
does mean you have to think harder every time you look at this thing.
next prev parent reply other threads:[~2020-06-28 13:18 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-24 16:11 Oleg Nesterov
2020-06-24 16:20 ` Oleg Nesterov
2020-06-24 16:36 ` Linus Torvalds
2020-06-26 15:43 ` Peter Zijlstra
2020-06-28 5:39 ` Linus Torvalds
2020-06-28 13:18 ` Peter Zijlstra [this message]
2020-06-29 3:28 ` Nicholas Piggin
2020-06-29 13:16 ` Nicholas Piggin
2020-06-29 16:36 ` Linus Torvalds
2020-06-30 2:12 ` Nicholas Piggin
2020-06-29 14:02 ` Oleg Nesterov
2020-06-30 2:08 ` Nicholas Piggin
2020-06-30 6:17 ` Oleg Nesterov
2020-06-30 9:08 ` Nicholas Piggin
2020-06-30 10:53 ` Oleg Nesterov
2020-06-30 11:36 ` Oleg Nesterov
2020-06-30 11:50 ` Oleg Nesterov
2020-06-30 18:02 ` Linus Torvalds
2020-06-30 18:29 ` Oleg Nesterov
2020-06-30 18:57 ` Linus Torvalds
2020-06-29 15:13 ` Oleg Nesterov
2020-06-24 16:22 ` Linus Torvalds
2020-06-24 16:43 ` Oleg Nesterov
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=20200628131813.GM4817@hirez.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=ak@linux.intel.com \
--cc=dave@stgolabs.net \
--cc=jack@suse.cz \
--cc=lczerner@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@techsingularity.net \
--cc=npiggin@gmail.com \
--cc=oleg@redhat.com \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®