Re: D state after applying ps hang patch

Jens Axboe
2001-01-29T03:50:31Z

On Sun, Jan 28 2001, David Ford wrote:
> The one LInus posted plus his addendum for the ll_rw_blk.
> http://blue-labs.org/patches/ps-hang.patch

You merged it wrong, Linus suggested to remove the entire

if (!list_empty(&q->request_freelist[rw])) {
blk_refill_freelist(q, rw);
list_add(&req->table, &q->request_freelist[rw]);
return;
}

In fact, with the change you made the box can't possible survive
for very long - once the queue freelists are empty, you will
deadlock immediately.

Try this ll_rw_blk.c change instead, on top of pre11. Include
Linus' mm fixes of course.

--- /opt/kernel/linux-2.4.1-pre10/drivers/block/ll_rw_blk.c Thu Jan 25 19:15:12 2001
+++ drivers/block/ll_rw_blk.c Sun Jan 28 19:22:20 2001
@@ -633,6 +634,8 @@
if (!list_empty(&q->request_freelist[rw])) {
blk_refill_freelist(q, rw);
list_add(&req->table, &q->request_freelist[rw]);
+ if (waitqueue_active(&q->wait_for_request))
+ wake_up_nr(&q->wait_for_request, 2);
return;
}