Re: 2.4.20: Proccess stuck in __lock_page ...

Andrew Morton
2003-05-28T10:46:12Z

Jens Axboe <axboe@suse.de> wrote:
>
> > THIS IS IT! The last one. No pauses writing a 2Gb file now unless I do a read
> > midstream.
>
> Cool, especially since we can easily apply this to -rc5 without any
> worries. Marcelo, if you please...?
>
> ===== drivers/block/ll_rw_blk.c 1.44 vs edited =====
> --- 1.44/drivers/block/ll_rw_blk.c Mon Apr 14 12:53:03 2003
> +++ edited/drivers/block/ll_rw_blk.c Wed May 28 12:49:30 2003
> @@ -829,8 +829,7 @@
> */
> if (q) {
> list_add(&req->queue, &q->rq[rw].free);
> - if (++q->rq[rw].count >= q->batch_requests &&
> - waitqueue_active(&q->wait_for_requests[rw]))
> + if (++q->rq[rw].count >= q->batch_requests)
> wake_up(&q->wait_for_requests[rw]);
> }
> }

umm, I'd like confirmation of that.

The waitqueue_active() test is wrong because of a missing barrier, but only
on SMP. And if it does make a mistake it will surely correct itself when the
next request is put back. (That's why I left it there...)

More testing, please.