Re: [PATCH] livelock in elevator scheduling

Andrea Arcangeli
2000-11-21T15:42:48Z

On Tue, Nov 21, 2000 at 05:28:40PM +0900, kumon@flab.fujitsu.co.jp wrote:
> @@ -47,6 +47,11 @@
> break;
> tmp->elevator_sequence--;
> }
> + if (entry == head) {
> + tmp = blkdev_entry_to_request(entry);
> + if (IN_ORDER(req, tmp))
> + entry = real_head->prev;
> + }
> list_add(&req->queue, entry);
> }

This patch is buggy. head with scsi doesn't point to a request so it
doesn't make sense to compare it.

> To implement a complete elevator scheduling, preparing an alternate

Complete elevator scheduling is _just_ implemented, but it's enterely disabled.
You should always enable it before running a 2.4.x kernel. To do that use
elvtune or apply this patch:

--- 2.4.0-test11-pre6/include/linux/elevator.h.~1~ Wed Jul 19 06:43:10 2000
+++ 2.4.0-test11-pre6/include/linux/elevator.h Tue Nov 21 15:57:51 2000
@@ -100,8 +100,8 @@
((elevator_t) { \
0, /* not used */ \
\
- 1000000, /* read passovers */ \
- 2000000, /* write passovers */ \
+ 500, /* read passovers */ \
+ 1000, /* write passovers */ \
0, /* max_bomb_segments */ \
\
0, /* not used */ \

The "DoS" attack is the bug that is been fixed by implementing the new elevator
with proper scheduling.

Andrea