Re: D state after applying ps hang patch

From: Jens Axboe (axboe@suse.de)
Date: Sun Jan 28 2001 - 22:50:01 EST


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;
                 }
 

-- 
Jens Axboe

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Jan 31 2001 - 21:00:31 EST