Messages in this thread Patch in this message | | | Subject | Re: 2.4.22-pre3 and reiserfs boot problem | From | Chris Mason <> | Date | 11 Jul 2003 09:15:21 -0400 |
| |
On Thu, 2003-07-10 at 14:01, Marcelo Tosatti wrote: > On Thu, 10 Jul 2003, Stephan von Krawczynski wrote: > > > On Thu, 10 Jul 2003 20:20:02 +0400 > > "Peter Lojkin" <ia6432@inbox.ru> wrote: > > > > > Hello, > > > > > > here is exact patch i've used. i made it by cutting pre2-pre3 diff, > > > so apply it o top of 2.4.22-pre3 with -R option to patch... > > > > Hello Peter > > Hello Marcelo > > > > I can confirm that pre3 works when reversing the attached patch. Thanks very > > much, Peter. > > Fine Stephan. Now can youplease get us the task backtraces from sysrq when > the hang happens? > > Andrea, Chris, any idea of why this is happening?
My first guess is that blk_oversized_queue is false but there aren't any requests left. That will pretty much spin in __get_request_wait with irqs off, which sounds similar to what he's hitting.
I think we need this hunk even if it doesn't fix his problem.
Stephan, if this patch doesn't help, could you please boot with nmi_watchdog=1? An earlier email said sysrq wasn't working, so we'll probably need the nmi_watchdog to get a backtrace.
-chris
===== drivers/block/ll_rw_blk.c 1.46 vs edited ===== --- 1.46/drivers/block/ll_rw_blk.c Fri Jul 4 13:35:08 2003 +++ edited/drivers/block/ll_rw_blk.c Fri Jul 11 08:30:54 2003 @@ -618,7 +618,7 @@ do { set_current_state(TASK_UNINTERRUPTIBLE); spin_lock_irq(&io_request_lock); - if (blk_oversized_queue(q)) { + if (blk_oversized_queue(q) || q->rq.count == 0) { __generic_unplug_device(q); spin_unlock_irq(&io_request_lock); schedule(); | |