From: Scott Wood <swood@redhat.com>
To: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Mikulas Patocka <mpatocka@redhat.com>,
linux-rt-users@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH RT] rtmutex: Flush block plug on __down_read()
Date: Tue, 08 Jan 2019 13:19:47 -0600 [thread overview]
Message-ID: <1546975187.3632.10.camel@redhat.com> (raw)
In-Reply-To: <20190107165056.2lhd53umgt4vod5o@linutronix.de>
On Mon, 2019-01-07 at 17:50 +0100, Sebastian Andrzej Siewior wrote:
> On 2019-01-04 15:33:21 [-0500], Scott Wood wrote:
> > __down_read() bypasses the rtmutex frontend to call
> > rt_mutex_slowlock_locked() directly, and thus it needs to call
> > blk_schedule_flush_flug() itself.
>
> we don't do this in the spin_lock() case because !RT doesn't do it.
And because spin_lock() is called inside the flush path.
> We
> do it for rtmutex because !RT does it for mutex.
> Now I can't remember why this was skipped for a rw_sem since it is
> performed for !RT as part of the schedule() invocation.
Without this we were seeing XFS hangs on our internal kernel. I wasn't able
to reproduce it on a newer kernel, but it's very timing-dependant so I
wouldn't read too much into that.
> If I don't come up with a plausible explanation then I will apply this
> plus a hunk for the __down_write_common() case which should also be
> required (right?).
I don't think it's needed, as it doesn't call into the rtmutex code via a
backdoor. When blocking on sem->rtmutex, rt_mutex_fastlock() will call the
flush. When blocking with a direct call to schedule(), tsk_is_pi_blocked()
will not be true, and thus schedule() will do the flush via
sched_submit_work().
-Scott
next prev parent reply other threads:[~2019-01-08 19:19 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-04 20:33 [PATCH RT] rtmutex: Flush block plug on __down_read() Scott Wood
2019-01-07 16:50 ` Sebastian Andrzej Siewior
2019-01-08 19:19 ` Scott Wood [this message]
2019-01-09 8:31 ` Sebastian Andrzej Siewior
2019-01-09 9:48 ` Sebastian Andrzej Siewior
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=1546975187.3632.10.camel@redhat.com \
--to=swood@redhat.com \
--cc=bigeasy@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rt-users@vger.kernel.org \
--cc=mpatocka@redhat.com \
--cc=tglx@linutronix.de \
/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.