From: Chris Mason <mason@suse.com>
To: Marcelo Tosatti <marcelo@conectiva.com.br>
Cc: Andrea Arcangeli <andrea@suse.de>,
Marc-Christian Petersen <m.c.p@wolk-project.de>,
linux-kernel@vger.kernel.org,
Carl-Daniel Hailfinger <c-d.hailfinger.kernel.2003@gmx.net>,
manish <manish@storadinc.com>,
Christian Klose <christian.klose@freenet.de>,
William Lee Irwin III <wli@holomorphy.com>
Subject: Re: 2.4.20: Proccess stuck in __lock_page ...
Date: 27 May 2003 16:08:55 -0400 [thread overview]
Message-ID: <1054066135.32363.73.camel@tiny.suse.com> (raw)
In-Reply-To: <Pine.LNX.4.55L.0305271530580.2100@freak.distro.conectiva>
On Tue, 2003-05-27 at 14:33, Marcelo Tosatti wrote:
> Andrea,
>
> It seems your "fix-pausing" patch is fixing a potential wakeup
> miss, right? (I looked quickly throught it). Could you explain me the
> problem its trying to fix and how?
>
> Its too late to fix that in 2.4.21 (rc5 is going out in hours).
The bug report seems to be on ext2, and on a box with 3.5GB of ram and
4G of dirty data. So, I don't think he is hitting the fix-pausing bug,
which needs just the right set of conditions to miss unplugs:
1) bdflush can't be awake, so the percentage of dirty buffers has to be
somewhat low. Otherwise bdflush will trigger unplugs.
2) kupdate needs to be stuck waiting on the super lock, otherwise
kupdate would be triggering unplugs
2a) Some process needs to be calling wait_on_buffer() with the super
lock held. This makes it pretty much impossible to trigger on ext2
without using O_SYNC mode.
3) You've got to race in __wait_on_buffer (cut n' paste from an old mail
from Andrea)
CPU0 CPU1
----------------- ------------------------
reiserfs_writepage
lock_buffer()
fsync_buffers_list() under lock_super()
wait_on_buffer()
run_task_queue(&tq_disk) -> noop
schedule() <- hang with lock_super acquired
submit_bh()
/* don't unplug here */
With ext3, you can trigger with two procs, it gets much easier if you
toss a schedule() into submit_bh(), right before generic_make_request.
reiserfs + the data logging patches is easier to trigger and produces
longer pauses.
For ext3:
A: while(1) sync
B: while(1) write(fd, 8k); fsync(fd); ftruncate(fd, 0);
The idea behind proc B is to increase the chances the
sync and the fsync are trying to write and wait on the same buffer.
ext3 is hung on a metadata block, while it tries to get write access to
the block before logging it. This ends up calling wait_on_buffer with
the super held while in proc B, while proc A is in sync flushing the
metadata block.
I trigged the hang in ext3 during block allocation, so the ftruncate
makes sure ext3 is constantly allocating blocks (and always dirtying the
same bitmap/direct block).
It isn't a perfect reproduction of the hang, because in ext3 kjournald
wakes up every once and a while (~30 seconds or more) and kicks the
transaction. But, with more procs running, someone could be waiting
with the journal lock held, which would keep kjournald from fixing
things.
next prev parent reply other threads:[~2003-05-27 19:56 UTC|newest]
Thread overview: 142+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-05-27 3:41 2.4.20: Proccess stuck in __lock_page manish
2003-05-27 4:03 ` Marcelo Tosatti
2003-05-27 4:25 ` manish
2003-05-27 4:59 ` Marcelo Tosatti
2003-05-27 15:29 ` manish
2003-05-27 16:59 ` Marcelo Tosatti
2003-05-27 4:31 ` manish
2003-05-27 14:14 ` Carl-Daniel Hailfinger
2003-05-27 14:28 ` William Lee Irwin III
2003-05-27 17:27 ` Marcelo Tosatti
2003-05-27 17:36 ` Marc-Christian Petersen
2003-05-27 17:47 ` Marcelo Tosatti
2003-05-27 17:52 ` Marc-Christian Petersen
2003-05-27 17:57 ` Marcelo Tosatti
2003-05-27 18:08 ` Marc-Christian Petersen
2003-05-27 18:25 ` Andrea Arcangeli
2003-05-27 18:33 ` Marcelo Tosatti
2003-05-27 18:39 ` Marc-Christian Petersen
2003-05-27 19:00 ` manish
2003-05-27 19:01 ` Marcelo Tosatti
2003-05-27 19:09 ` manish
2003-05-27 19:12 ` manish
2003-05-27 19:28 ` Marcelo Tosatti
2003-05-27 19:34 ` manish
2003-05-27 20:20 ` Andrea Arcangeli
2003-05-27 20:25 ` Marc-Christian Petersen
2003-05-27 20:42 ` manish
2003-05-27 20:47 ` Andrea Arcangeli
2003-05-27 20:50 ` manish
2003-05-27 21:05 ` Andrea Arcangeli
2003-05-27 20:03 ` Andrea Arcangeli
2003-05-27 20:08 ` Marcelo Tosatti
2003-05-27 20:25 ` Andrea Arcangeli
2003-05-27 22:18 ` Andrew Morton
2003-05-27 22:38 ` Andrea Arcangeli
2003-05-27 22:40 ` Andrew Morton
2003-05-27 22:58 ` Andrea Arcangeli
2003-05-27 20:08 ` Chris Mason [this message]
2003-05-27 18:35 ` Marc-Christian Petersen
2003-05-27 20:10 ` Andrea Arcangeli
2003-05-27 20:24 ` Marc-Christian Petersen
2003-05-27 20:45 ` Andrea Arcangeli
2003-05-27 20:53 ` Marc-Christian Petersen
2003-05-27 21:00 ` Jens Axboe
2003-05-27 21:11 ` Marc-Christian Petersen
2003-05-27 21:19 ` Jens Axboe
2003-05-27 20:55 ` Jens Axboe
2003-05-27 21:05 ` William Lee Irwin III
2003-05-27 21:18 ` Jens Axboe
2003-05-27 21:33 ` Andrea Arcangeli
2003-05-27 18:09 ` manish
2003-05-27 17:53 ` manish
2003-05-27 18:01 ` Marc-Christian Petersen
2003-05-27 18:16 ` Marcelo Tosatti
2003-05-27 18:25 ` Marc-Christian Petersen
2003-05-27 18:12 ` Matthias Mueller
2003-05-27 17:36 ` William Lee Irwin III
2003-05-27 17:38 ` Carl-Daniel Hailfinger
2003-05-27 17:50 ` manish
2003-05-27 18:04 ` Marc-Christian Petersen
2003-05-27 23:06 ` Georg Nikodym
2003-05-27 23:26 ` Christopher S. Aker
2003-05-28 5:33 ` Con Kolivas
2003-05-28 6:04 ` Jens Axboe
2003-05-28 7:13 ` Con Kolivas
2003-05-28 7:13 ` Jens Axboe
2003-05-28 7:32 ` Marc-Christian Petersen
2003-05-28 7:35 ` Jens Axboe
2003-05-28 7:51 ` Andrew Morton
2003-05-28 8:30 ` Jens Axboe
2003-05-28 8:43 ` Marc-Christian Petersen
2003-05-28 8:40 ` Marc-Christian Petersen
2003-05-28 10:13 ` Matthias Mueller
2003-05-28 10:18 ` Jens Axboe
2003-05-28 10:23 ` Andrew Morton
2003-05-28 10:25 ` Jens Axboe
2003-05-28 10:48 ` Con Kolivas
2003-05-28 10:50 ` Jens Axboe
2003-05-28 10:59 ` Andrew Morton
2003-05-28 11:17 ` Marc-Christian Petersen
2003-05-28 11:27 ` Andrew Morton
2003-05-28 11:31 ` Marc-Christian Petersen
2003-05-28 12:53 ` Jens Axboe
2003-05-28 12:58 ` Matthias Mueller
2003-05-28 13:07 ` Carl-Daniel Hailfinger
2003-05-28 13:08 ` Jens Axboe
2003-05-28 13:16 ` Matthias Mueller
2003-05-28 13:21 ` Con Kolivas
2003-05-28 13:30 ` Carl-Daniel Hailfinger
2003-05-28 13:33 ` Con Kolivas
2003-05-28 13:27 ` Stefan Foerster
2003-05-28 13:37 ` Stefan Foerster
2003-05-28 14:28 ` Chris Mason
2003-05-28 14:33 ` Jens Axboe
2003-05-28 14:58 ` Chris Mason
2003-05-28 15:39 ` Jens Axboe
2003-05-28 23:38 ` Chris Mason
2003-05-28 13:25 ` Stefan Foerster
2003-05-28 18:19 ` Zwane Mwaikambo
2003-05-28 18:32 ` Zwane Mwaikambo
2003-05-28 18:47 ` Elladan
2003-05-28 23:03 ` Con Kolivas
2003-05-29 13:09 ` Andrea Arcangeli
2003-05-29 15:04 ` Con Kolivas
2003-05-29 16:23 ` Marc-Christian Petersen
2003-05-28 11:41 ` Con Kolivas
2003-05-29 12:52 ` Andrea Arcangeli
2003-05-28 11:03 ` Nick Piggin
2003-05-28 10:29 ` Con Kolivas
2003-05-28 10:29 ` Marc-Christian Petersen
2003-05-28 12:10 ` Matthias Mueller
2003-05-28 12:14 ` Matthias Mueller
2003-05-28 12:21 ` Carl-Daniel Hailfinger
2003-05-28 12:23 ` Matthias Mueller
2003-05-28 12:28 ` Carl-Daniel Hailfinger
2003-05-28 12:38 ` Matthias Mueller
2003-05-29 13:19 ` Andrea Arcangeli
2003-05-29 14:10 ` Matthias Mueller
2003-05-29 16:22 ` Andrea Arcangeli
2003-05-28 14:00 ` Con Kolivas
2003-05-29 13:24 ` Andrea Arcangeli
2003-05-29 13:55 ` Willy Tarreau
2003-05-29 14:09 ` Con Kolivas
2003-05-29 14:38 ` Matthias Mueller
2003-05-29 16:10 ` Willy TARREAU
2003-05-29 14:45 ` Marc-Christian Petersen
2003-05-29 16:06 ` Willy TARREAU
2003-05-29 16:49 ` Andrea Arcangeli
2003-05-29 17:46 ` Willy Tarreau
2003-05-29 16:19 ` Andrea Arcangeli
2003-05-29 1:32 ` manish
2003-05-28 10:24 ` Marc-Christian Petersen
2003-05-28 7:16 ` Marc Wilson
2003-05-28 19:53 ` David Ford
2003-05-28 9:36 ` Ragnar Hojland Espinosa
2003-05-28 9:45 ` Jens Axboe
2003-05-28 9:53 ` Marc-Christian Petersen
2003-05-28 10:01 ` Jens Axboe
2003-05-28 10:58 ` Alan Cox
2003-05-29 8:34 ` Ragnar Hojland Espinosa
[not found] <20030527035006$5339@gated-at.bofh.it>
[not found] ` <20030527175008$3573@gated-at.bofh.it>
[not found] ` <20030527180016$418c@gated-at.bofh.it>
[not found] ` <20030527182011$4acb@gated-at.bofh.it>
[not found] ` <20030528094008$1500@gated-at.bofh.it>
[not found] ` <20030528095014$7b21@gated-at.bofh.it>
2003-05-28 18:55 ` Thomas Tonino
2003-06-02 10:43 ` Jens Axboe
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=1054066135.32363.73.camel@tiny.suse.com \
--to=mason@suse.com \
--cc=andrea@suse.de \
--cc=c-d.hailfinger.kernel.2003@gmx.net \
--cc=christian.klose@freenet.de \
--cc=linux-kernel@vger.kernel.org \
--cc=m.c.p@wolk-project.de \
--cc=manish@storadinc.com \
--cc=marcelo@conectiva.com.br \
--cc=wli@holomorphy.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