Re: [2.4.17/18pre] VM and swap - it's really unusable

Andrea Arcangeli
2002-01-14T11:35:27Z

On Sat, Jan 12, 2002 at 01:12:27PM -0800, J Sloan wrote:
>
> Ah - if it stands a chance of going into 2.4,
> I'll test the heck out of it!
> I'll give it the Q3A test, the RtCW test, the
> xine/xmms/dbench tests, and more - glad
> to be of service.
> jjs
> Andrew Morton wrote:
>
> Ed Sweetman wrote:
>
> If you want to test the preempt kernel you're going to need something that
> can find the mean latancy or "time to action" for a particular program or
> all programs being run at the time and then run multiple programs that you
> would find on various peoples' systems. That is the "feel" people talk
> about when they praise the preempt patch.
>
> Right. And that is precisely why I created the "mini-ll" patch. To
> give the improved "feel" in a way which is acceptable for merging into
> the 2.4 kernel.
> And guess what? Nobody has tested the damn thing, so it's going
> nowhere.
> Here it is again:
> --- linux-2.4.18-pre3/fs/buffer.c Fri Dec 21 11:19:14 2001
> +++ linux-akpm/fs/buffer.c Sat Jan 12 12:22:29 2002
> @@ -249,12 +249,19 @@ static int wait_for_buffers(kdev_t dev,
> struct buffer_head * next;
> int nr;
>
> - next = lru_list[index];
> nr = nr_buffers_type[index];
> +repeat:
> + next = lru_list[index];
> while (next && --nr >= 0) {
> struct buffer_head *bh = next;
> next = bh->b_next_free;
>
> + if (dev == NODEV && current->need_resched) {
> + spin_unlock(&lru_list_lock);
> + conditional_schedule();
> + spin_lock(&lru_list_lock);
> + goto repeat;
> + }
> if (!buffer_locke
> d(bh)) {

this introduces possibility of looping indefinitely, this is why I
rejected it while I merged the mini-ll other points into -aa, if you
want to do anything like that at the very least you should roll the head
of the list as well or something like that.

Andrea