Re: 2.4.1-pre10 deadlock (Re: ps hang in 241-pre10)

From: Jens Axboe (axboe@suse.de)
Date: Sun Jan 28 2001 - 13:23:06 EST


On Sun, Jan 28 2001, Lorenzo Allegrucci wrote:
> >Ho humm. Jens: imagine that you have more people waiting for requests than
> >"batchcount". Further, imagine that you have multiple requests finishing
> >at the same time. Not unlikely. Now, imagine that one request finishes,
> >and causes "batchcount" users to wake up, and immediately another request
> >finishes but THAT one doesn't wake anybody up because it notices that the
> >freelist isn't empty - so it thinks that it doesn't need to wake anybody.
> >
> >Lorenzo, does the problem go away for you if you remove the
> >
> > if (!list_empty(&q->request_freelist[rw])) {
> > ...
> > }
> >
> >code from blkdev_release_request() in drivers/block/ll_rw_block.c?
>
> Yes, it does.

How about this instead?

--- /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 <axboe@suse.de>
* SuSE Labs
-
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:30 EST