From: Theodore Ts'o <tytso@mit.edu>
To: Staffan Tjernstrom <stjernstrom@eagleseven.com>
Cc: Steven Rostedt <rostedt@goodmis.org>,
"linux-rt-users@vger.kernel.org" <linux-rt-users@vger.kernel.org>,
"tglx@linutronix.de" <tglx@linutronix.de>,
"C.Emde@osadl.org" <C.Emde@osadl.org>,
"jkacur@redhat.com" <jkacur@redhat.com>
Subject: Re: Observed deadlock in ext4 under 3.2.23-rt37 & 3.2.33-rt50
Date: Thu, 3 Jan 2013 10:36:34 -0500 [thread overview]
Message-ID: <20130103153634.GD16895@thunk.org> (raw)
In-Reply-To: <7A2FC0CD30EF4745AE15F485252D38AC2F45A70E59@clark>
On Thu, Jan 03, 2013 at 08:36:39AM -0600, Staffan Tjernstrom wrote:
> This may be completely off-in-newbie land, but I figured I'd throw in what I think I've tracked down.
>
> It looks as if there was a fairly recent patch to turn locks in
> parts of the code into atomic instructions (apologies - I don't have
> the patch id to hand atm) in do_get_write_access() amongst others.
In fs/jbd2/transaction.c? Can you give me the code snippit and/or
function and line number that you're concerned about?
> Then in turn the C++ standard library loops around calls to write()
> whilst access isn't available, basically blocking on the atomic
> (which then in turn doesn't support priority inheritance), causing
> the wait loop.
Yeah, but do_get_write_access() blocks (usually waiting for the jbd2
kernel thread to complete, but possibly on a memory allocation); we
don't return EAGAIN or anything like that. So I don't see how that
would cause a wait loop.
It's possible we could be returning -ENOMEM; are you looping for all
write failures, or just for EAGAIN/EINTR and partial writes?
- Ted
next prev parent reply other threads:[~2013-01-03 15:36 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <7A2FC0CD30EF4745AE15F485252D38AC2F45A70C9A@clark>
2013-01-03 3:09 ` Observed deadlock in ext4 under 3.2.23-rt37 & 3.2.33-rt50 Steven Rostedt
2013-01-03 4:22 ` Theodore Ts'o
2013-01-03 13:21 ` Steven Rostedt
2013-01-03 14:18 ` Theodore Ts'o
2013-01-03 14:36 ` Staffan Tjernstrom
2013-01-03 15:36 ` Theodore Ts'o [this message]
2013-01-03 15:52 ` Staffan Tjernstrom
2013-01-03 15:35 ` Steven Rostedt
2013-01-03 14:29 ` Staffan Tjernstrom
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=20130103153634.GD16895@thunk.org \
--to=tytso@mit.edu \
--cc=C.Emde@osadl.org \
--cc=jkacur@redhat.com \
--cc=linux-rt-users@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=stjernstrom@eagleseven.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.