From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Paul Gortmaker <paul.gortmaker@windriver.com>
Cc: rostedt@goodmis.org, tglx@linutronix.de, bigeasy@linutronix.de,
linux-rt-users@vger.kernel.org
Subject: Re: [PATCH 0/2] Avoid more bit_spin_lock usage on RT kernels
Date: Mon, 10 Jun 2013 14:56:31 -0700 [thread overview]
Message-ID: <20130610215631.GU5146@linux.vnet.ibm.com> (raw)
In-Reply-To: <1370900209-40769-1-git-send-email-paul.gortmaker@windriver.com>
On Mon, Jun 10, 2013 at 05:36:47PM -0400, Paul Gortmaker wrote:
> The bit_spin_locks have been problematic on RT for a long time; dating
> at least back to 2.6.11 and their use in the journalling code[1]. We
> still have patches today that clobber them for cgroups and jbd/jbd2
> code on RT[2]. But there have been some newer users added.
>
> In commit 4e35e6070b1c [2.6.38] ("kernel: add bl_list") we got
> the list heads with the zero'th bit reserved for locking.
>
> It was shortly followed with ceb5bdc2d24 ("fs: dcache per-bucket
> dcache hash locking") that made it clear the bit was now being used
> in a bit_spin_lock context (e.g. in fs/dcache.c).
>
> As of commit 1879fd6a265 [2.6.39] ("add hlist_bl_lock/unlock helpers")
> we got helper functions that combined the open coded bit locks into
> one place. At the same time, it makes it more clear that bit_spin_lock
> is being used, and where.
>
> Assuming that we still can not use the bit_spin_lock safely on RT,
> then users of these helpers will also result in unsafe usage. Following
> the style of "fix" used for jbd code[2], I've done a similar thing here
> and introduce a stand-alone lock for the list head. This may be less
> than ideal from a performance standpoint -- currently unclear to me.
>
> I can't pin an actual failing on not having these patches present; I
> came by it simply by inspecting the jbd2 code while trying to diagnose
> another problem (one which these patches unfortunately don't fix) and
> ended up searching for users of bit_spin.
>
> Noting the above, there is also another use case which may be
> undesireable for RT -- for the RT trees which now support SLUB,
> there is a bit_spin_lock used for slab_lock/slab_unlock.... I'll
> only mention it here and leave it for a separate thread/discussion.
>
> I'm calling these RFC patches, meant to just start discussion. The
> two patches could obviously be squashed into one, but I wanted the
> 2nd (rawlock) to remain separate since it shows why it becomes raw,
> and I'm not 100% convinced that my assumption that it is OK from a
> latency perspective to be raw is actually a valid one yet.
>
> In addition, we probably want to be looking at Eric/PaulM's patch
> currently in net-next: c87a124a5d ("net: force a reload of first
> item in hlist_nulls_for_each_entry_rcu") [3] -- as a candidate for
> cherry-pick onto RT, I think. It will get there eventually via
> DaveM --> GregKH --> Steve path (for the rt-stable branches).
>
> Patches attached here were from a v3.6.11.5-rt37 based tree.
They both look good to me:
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> Paul.
> --
>
> [1] http://linux.kernel.narkive.com/octAmqz8/patch-real-time-preemption-rt-2-6-11-rc3-v0-7-38-01.4
>
> [2] http://git.kernel.org/cgit/linux/kernel/git/paulg/3.6-rt-patches.git/tree/mm-cgroup-page-bit-spinlock.patch
> http://git.kernel.org/cgit/linux/kernel/git/paulg/3.6-rt-patches.git/tree/fs-jbd-replace-bh_state-lock.patch
>
> [3] http://patchwork.ozlabs.org/patch/247360/
> http://git.kernel.org/cgit/linux/kernel/git/davem/net-next.git/commit/?id=c87a124a5d5e8cf8e21c4363c3372bcaf53ea190
>
> Paul Gortmaker (2):
> list_bl.h: make list head locking RT safe
> list_bl: make list head lock a raw lock
>
> include/linux/list_bl.h | 24 +++++++++++++++++++++---
> 1 file changed, 21 insertions(+), 3 deletions(-)
>
> --
> 1.8.1.2
>
prev parent reply other threads:[~2013-06-10 21:56 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-10 21:36 [PATCH 0/2] Avoid more bit_spin_lock usage on RT kernels Paul Gortmaker
2013-06-10 21:36 ` [PATCH 1/2] list_bl.h: make list head locking RT safe Paul Gortmaker
2013-06-21 12:23 ` Sebastian Andrzej Siewior
2013-06-21 15:25 ` Paul Gortmaker
2013-06-21 15:36 ` Sebastian Andrzej Siewior
2013-06-21 19:07 ` [PATCH v2] " Paul Gortmaker
2013-06-28 11:23 ` Sebastian Andrzej Siewior
2013-06-10 21:36 ` [PATCH 2/2] list_bl: make list head lock a raw lock Paul Gortmaker
2013-06-10 21:56 ` Paul E. McKenney [this message]
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=20130610215631.GU5146@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=bigeasy@linutronix.de \
--cc=linux-rt-users@vger.kernel.org \
--cc=paul.gortmaker@windriver.com \
--cc=rostedt@goodmis.org \
--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.