Re: DAC960 crash dequeueing request

Dave Olien (dmo@osdl.org)
Fri, 6 Jun 2003 09:51:53 -0700


Mary,

How's this for a response to Andrew and lkml?

------------------------------------------------------------------------

Andrew,

After running several iterations of the database workload, it seems
the patch below did indeed eliminate the BUG() we were hitting.

In addition, the patched kernel seems to perform somwhat better.
The workload performance is improved by about 2%, and the standard
deviation in performance between iterations of the work load was reduced
from 137 to 48.

A performance results comparison can be found at

http://www.osdl.org/projects/dbt2dev/results/8way/70AKPM/results.html

Thanks to Mary Meredith <maryedie@osdl.org> for the performance
measurements and comparisons, and for hitting the BUG() in the first place.

Andrew Morton wrote:
>
> Dave Olien wrote:
> >
> > In linux 2.5.70, with no patches applied, we've had one BUG of the form:
> >
> > kernel BUG at include/linux/blkdev.h:407!
>
>
>
> The below should fix it.
>
>
> diff -puN drivers/block/deadline-iosched.c~deadline-hash-removal-fix drivers/block/deadline-iosched.c
> --- 25/drivers/block/deadline-iosched.c~deadline-hash-removal-fix 2003-06-04 00:50:36.000000000 -0700
> +++ 25-akpm/drivers/block/deadline-iosched.c 2003-06-04 00:50:36.000000000 -0700
> @@ -121,6 +121,15 @@ static inline void deadline_del_drq_hash
> __deadline_del_drq_hash(drq);
> }
>
> +static void
> +deadline_remove_merge_hints(request_queue_t *q, struct deadline_rq *drq)
> +{
> + deadline_del_drq_hash(drq);
> +
> + if (q->last_merge == &drq->request->queuelist)
> + q->last_merge = NULL;
> +}
> +
> static inline void
> deadline_add_drq_hash(struct deadline_data *dd, struct deadline_rq *drq)
> {
> @@ -310,7 +319,7 @@ static void deadline_remove_request(requ
> struct deadline_data *dd = q->elevator.elevator_data;
>
> list_del_init(&drq->fifo);
> - deadline_del_drq_hash(drq);
> + deadline_remove_merge_hints(q, drq);
> deadline_del_drq_rb(dd, drq);
> }
> }
>
> _
>
> ----- End forwarded message -----
>
> --=-OFfR5BGtLWFFgyRX7TNt--

-
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/