public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@suse.de>
To: rwhron@earthlink.net
Cc: viro@math.psu.edu, linux-kernel@vger.kernel.org
Subject: Re: 2.5.2-pre1 dbench 32 hangs in vmstat "b" state
Date: Sat, 29 Dec 2001 18:48:37 +0100	[thread overview]
Message-ID: <20011229184837.F1821@suse.de> (raw)
In-Reply-To: <20011221185538.A131@earthlink.net> <20011224150337.A593@suse.de> <20011224115953.A118@earthlink.net> <20011224180244.C1241@suse.de> <20011227140723.A4713@earthlink.net> <20011228124037.K2973@suse.de> <20011228091401.A15569@earthlink.net> <20011228153022.D1248@suse.de> <20011229014248.A17257@earthlink.net> <20011229183315.E1821@suse.de>
In-Reply-To: <20011229183315.E1821@suse.de>

On Sat, Dec 29 2001, Jens Axboe wrote:
> On Sat, Dec 29 2001, rwhron@earthlink.net wrote:
> > > > Kernel panic: Out of memory and no killable processes...
> > > 
> > > Someone else did report a similar case. Very strange, doesn't look bio
> > 
> > Al Viro posted a fix:
> > http://marc.theaimsgroup.com/?l=linux-kernel&m=100959128922157&w=2
> > 
> > I used Al's patch and 2.5.2-pre3 boots with reiserfs root_fs
> > and no panic.
> > 
> > Below is the trace on 2.5.2-pre3 after dbench 32 livelocked.
> 
> Thanks, could you try with this patch? It's not a fix (haven't found the
> bug yet), but I think we are looking at list corruption so please check
> if this patch at least alters when it hangs etc.

Ah I think I got it -- appears to be down to no rechecking for empty
queue after a potential queue_lock droppage (busy I/O, no request left
get_request returns NULL, drop lock and run get_request_wait). This
explains the get_request_wait deadlock, compiling right now...

--- /opt/kernel/linux-2.5.2-pre3/drivers/block/ll_rw_blk.c	Sat Dec 29 12:17:53 2001
+++ drivers/block/ll_rw_blk.c	Sat Dec 29 12:45:04 2001
@@ -881,7 +881,9 @@
 
 	BUG_ON(rw != READ && rw != WRITE);
 
+	spin_lock_irq(q->queue_lock);
 	rq = get_request(q, rw);
+	spin_unlock_irq(q->queue_lock);
 
 	if (!rq && (gfp_mask & __GFP_WAIT))
 		rq = get_request_wait(q, rw);
@@ -1081,7 +1083,7 @@
 {
 	struct request *req, *freereq = NULL;
 	int el_ret, latency = 0, rw, nr_sectors, cur_nr_sectors, barrier;
-	struct list_head *insert_here = &q->queue_head;
+	struct list_head *insert_here;
 	elevator_t *elevator = &q->elevator;
 	sector_t sector;
 
@@ -1103,15 +1105,14 @@
 	barrier = test_bit(BIO_RW_BARRIER, &bio->bi_rw);
 
 	spin_lock_irq(q->queue_lock);
+again:
+	req = NULL;
+	insert_here = q->queue_head.prev;
 
 	if (blk_queue_empty(q) || barrier) {
 		blk_plug_device(q);
 		goto get_rq;
 	}
-
-again:
-	req = NULL;
-	insert_here = q->queue_head.prev;
 
 	el_ret = elevator->elevator_merge_fn(q, &req, bio);
 	switch (el_ret) {

-- 
Jens Axboe


  reply	other threads:[~2001-12-29 17:49 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-12-21 14:11 2.5.2-pre1 dbench 32 hangs in vmstat "b" state rwhron
2001-12-21 14:46 ` Jens Axboe
2001-12-21 16:43   ` rwhron
2001-12-21 17:01     ` Jens Axboe
2001-12-21 18:47       ` rwhron
2001-12-21 22:19         ` Jens Axboe
2001-12-21 23:55   ` rwhron
2001-12-24 14:03     ` Jens Axboe
2001-12-24 16:59       ` rwhron
2001-12-24 17:02         ` Jens Axboe
2001-12-24 22:14           ` rwhron
2001-12-27 19:07           ` rwhron
2001-12-28 11:40             ` Jens Axboe
2001-12-28 14:14               ` rwhron
2001-12-28 14:30                 ` Jens Axboe
2001-12-28 17:49                   ` rwhron
2001-12-28 19:29                   ` rwhron
2001-12-29  6:42                   ` rwhron
2001-12-29 17:33                     ` Jens Axboe
2001-12-29 17:48                       ` Jens Axboe [this message]
2001-12-29 19:43                         ` rwhron

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=20011229184837.F1821@suse.de \
    --to=axboe@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rwhron@earthlink.net \
    --cc=viro@math.psu.edu \
    /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