From: Steven Rostedt <rostedt@goodmis.org>
To: Ingo Molnar <mingo@elte.hu>
Cc: "Stephen C. Tweedie" <sct@redhat.com>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [patch] Real-Time Preemption, -RT-2.6.13-rc4-V0.7.52-01
Date: Fri, 26 Aug 2005 00:24:09 -0400 [thread overview]
Message-ID: <1125030249.5365.23.camel@localhost.localdomain> (raw)
In-Reply-To: <20050812125844.GA13357@elte.hu>
On Fri, 2005-08-12 at 14:58 +0200, Ingo Molnar wrote:
> FYI, in -53-05 i've added a bh->b_update_lock, which enabled me to get
> rid of the bitlock ugliness in fs/buffer.c. Maybe it could be used to
> have a better fix for the jbd bitlock thing too?
Well, I just spent several hours trying to use the b_update_lock in
implementing something to replace the bit spinlocks for RT. It's
getting really ugly and I just hit a stone wall.
The problem is that I have two locks to work with. A
jbd_lock_bh_journal_head and a jbd_lock_bh_state. Unfortunately, I also
have a ranking order of:
jbd_lock_bh_state -> j_state_lock -> jbd_lock_bh_journal_head
If the ranking wasn't like this, I could probably make a little more
progress.
The jbd_lock_bh_journal_head is used to protect against creating a
journal_head and adding it to a buffer_head. This was the obvious
choice to use your b_update_lock as a replacement, since I need to have
a lock before I acquired a journal descriptor.
The jbd_lock_bh_state was going to exist in the journal desciptor that
is stored in the buffer_head private data. But this lead to a problem
when this is deleted. The private data is freed while the lock is held.
So, keeping the lock in with the journal descriptor had the problem of
being freed before it was unlocked.
I started adding code to delay the freeing of the descriptor until after
the lock was held, but this added another problem. There might be
another process waiting on this lock, and when it gets it, it tests if
the buffer_head even has a journal_descriptor for it. So, even if I
delayed the freeing, another process could be waiting on this so you
still may have a premature free. Not to mention that this code was
becoming _very_ intrusive, since the freeing takes place deep inside
functions that acquire the lock.
So this lock has the same problem as the jbd_lock_bh_journal_head, where
as, you have a buffer_head and you want to take this lock before you
know that this buffer_head even has a journal descriptor attached to it.
So, the only other solutions that I can think of is:
a) add yet another (bloat) lock to the buffer head.
b) Still use your b_update_lock for the jbd_lock_bh_journal_head and
change the jbd_lock_bh_state to what I discussed earlier, and that being
the hash wait_on_bit code.
So do you have any ideas?
-- Steve
next prev parent reply other threads:[~2005-08-26 4:24 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-30 16:03 [patch] Real-Time Preemption, -RT-2.6.13-rc4-V0.7.52-01 Ingo Molnar
2005-07-30 20:47 ` Peter Zijlstra
2005-07-30 20:52 ` Ingo Molnar
2005-07-31 4:47 ` Lee Revell
2005-07-31 6:38 ` Ingo Molnar
2005-08-01 4:45 ` Lee Revell
2005-08-01 21:08 ` Ingo Molnar
2005-08-01 21:12 ` Ingo Molnar
2005-08-02 13:56 ` Steven Rostedt
2005-08-02 14:05 ` Lee Revell
2005-08-02 14:20 ` Steven Rostedt
2005-08-02 15:37 ` 2.6.13-rc3 -> sluggish PS2 keyboard (was Re: [patch] Real-Time Preemption, -RT-2.6.13-rc4-V0.7.52-01) Lee Revell
2005-08-02 15:44 ` Vojtech Pavlik
2005-08-02 15:46 ` Lee Revell
2005-08-02 15:47 ` Lee Revell
2005-08-02 15:53 ` Steven Rostedt
2005-08-02 15:55 ` Vojtech Pavlik
2005-08-02 15:55 ` Dmitry Torokhov
2005-08-02 15:38 ` [patch] Real-Time Preemption, -RT-2.6.13-rc4-V0.7.52-01 Lee Revell
2005-07-31 8:03 ` Peter Zijlstra
2005-07-31 10:44 ` Ingo Molnar
2005-07-31 15:56 ` [patch] Real-Time Preemption, -RT-2.6.13-rc4-V0.7.52-05 Gene Heskett
2005-08-01 18:22 ` [patch] Real-Time Preemption, -RT-2.6.13-rc4-V0.7.52-01 Steven Rostedt
2005-08-01 19:49 ` Steven Rostedt
2005-08-01 20:52 ` Ingo Molnar
2005-08-01 21:09 ` Daniel Walker
2005-08-01 21:15 ` Ingo Molnar
2005-08-02 0:43 ` Steven Rostedt
2005-08-01 21:15 ` Steven Rostedt
2005-08-01 21:23 ` Ingo Molnar
2005-08-01 21:20 ` Daniel Walker
2005-08-02 0:53 ` Steven Rostedt
2005-08-02 10:19 ` Ingo Molnar
2005-08-02 19:45 ` Steven Rostedt
2005-08-02 19:56 ` Steven Rostedt
2005-08-02 23:38 ` Daniel Walker
2005-08-03 0:00 ` Steven Rostedt
2005-08-03 1:12 ` George Anzinger
2005-08-03 1:48 ` Keith Owens
2005-08-03 2:12 ` George Anzinger
2005-08-03 2:25 ` Daniel Walker
2005-08-03 2:42 ` Steven Rostedt
2005-08-03 2:58 ` Daniel Walker
2005-08-03 10:30 ` Steven Rostedt
2005-08-03 15:10 ` Daniel Walker
2005-08-03 10:37 ` [Question] arch-independent way to differentiate between user and kernel Steven Rostedt
2005-08-03 10:48 ` Ingo Molnar
2005-08-03 12:18 ` Steven Rostedt
2005-08-03 10:56 ` [Question] arch-independent way to differentiate between user andkernel linux-os (Dick Johnson)
2005-08-03 11:44 ` Steven Rostedt
2005-08-03 12:04 ` Ingo Molnar
2005-08-03 12:30 ` Steven Rostedt
2005-08-03 14:50 ` [patch] Real-Time Preemption, -RT-2.6.13-rc4-V0.7.52-01 Steven Rostedt
2005-08-03 15:15 ` Steven Rostedt
2005-08-03 15:57 ` Steven Rostedt
2005-08-03 16:44 ` Steven Rostedt
[not found] ` <20050812125844.GA13357@elte.hu>
2005-08-26 4:24 ` Steven Rostedt [this message]
2005-08-26 6:08 ` Ingo Molnar
2005-08-26 11:20 ` Steven Rostedt
2005-08-30 10:58 ` Stephen C. Tweedie
2005-08-30 11:14 ` Ingo Molnar
2005-08-30 11:00 ` Stephen C. Tweedie
2005-08-02 3:55 ` Steven Rostedt
2005-08-02 4:07 ` Daniel Walker
2005-08-02 14:53 ` Steven Rostedt
2005-08-04 12:20 ` Andrzej Nowak
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=1125030249.5365.23.camel@localhost.localdomain \
--to=rostedt@goodmis.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=sct@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox