lkml.org 
[lkml]   [2004]   [Mar]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: 2.6.5-rc1-mm2 : Badness in elv_requeue_request at drivers/block/elevator.c:157
On Thu, Mar 18 2004, Jens Axboe wrote:
> On Thu, Mar 18 2004, Eric Valette wrote:
> > I have this message two times as I have two adaptec controllers...
> >
> > Attached my .config and the dmesg output
> >
> > ksymoops 2.4.9 on i686 2.6.5-rc1-mm2. Options used
> > -V (default)
> > -k /proc/ksyms (default)
> > -l /proc/modules (default)
> > -o /lib/modules/2.6.5-rc1-mm2/ (default)
> > -m /System.map (specified)
> >
> > Error (regular_file): read_ksyms stat /proc/ksyms failed
> > No modules in ksyms, skipping objects
> > No ksyms, skipping lsmod
> > CPU 0 irqstacks, hard=c05f7000 soft=c05f6000
> > Call Trace:
> > [<c02b268d>] elv_requeue_request+0x8d/0xa0
>
> Ah damn, requeue through blk_insert_request... Let me think about this
> a bit, I'll post a fix for you.

Does this work for you?

--- drivers/block/elevator.c~ 2004-03-18 10:56:34.494431670 +0100
+++ drivers/block/elevator.c 2004-03-18 11:05:00.115063157 +0100
@@ -153,7 +153,7 @@
* it already went through dequeue, we need to decrement the
* in_flight count again
*/
- if (blk_rq_started(rq)) {
+ if (blk_account_rq(rq)) {
WARN_ON(q->in_flight == 0);
q->in_flight--;
}
@@ -244,7 +244,7 @@
* driver has seen (REQ_STARTED set), to avoid false accounting
* for request-request merges
*/
- if (blk_rq_started(rq)) {
+ if (blk_account_rq(rq)) {
q->in_flight++;
WARN_ON(q->in_flight > 2 * q->nr_requests);
}
@@ -341,7 +341,7 @@
/*
* request is released from the driver, io must be done
*/
- if (blk_rq_started(rq)) {
+ if (blk_account_rq(rq)) {
WARN_ON(q->in_flight == 0);
q->in_flight--;
}
--- include/linux/blkdev.h~ 2004-03-18 11:03:59.431584757 +0100
+++ include/linux/blkdev.h 2004-03-18 11:05:16.980250506 +0100
@@ -381,6 +381,8 @@
#define blk_noretry_request(rq) ((rq)->flags & REQ_FAILFAST)
#define blk_rq_started(rq) ((rq)->flags & REQ_STARTED)

+#define blk_account_rq(rq) (blk_rq_started(rq) && blk_fs_request(rq))
+
#define blk_pm_suspend_request(rq) ((rq)->flags & REQ_PM_SUSPEND)
#define blk_pm_resume_request(rq) ((rq)->flags & REQ_PM_RESUME)
#define blk_pm_request(rq) \
--
Jens Axboe

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:01    [W:0.076 / U:0.460 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site