lkml.org 
[lkml]   [2003]   [Jul]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH 2.6.0-test2] fix broken blk_start_queue behavior
This patch changes the behavior of blk_start_queue() so that request 
queues really do start up again after blk_start_queue() is called (on
queues that were previously stopped via blk_stop_queue). The patch
applies against 2.6.0-test2. I have tested this patch with the use of
blk_stop_queue and blk_start_queue in my branch of the nbd block device
driver (not yet released). blk_start_queue is also used in
./drivers/{block/cciss.c,ide/ide-io.c} which should see things function
as intended now w.r.t. stopping and starting the request queue (but I do
not know if anybody noticed that they weren't working correctly before).
ide-io.c uses queue stop and start for power management handling. Please
let me know if you've seen a problem before with that, especially if
this patch fixes it - that will be happy news ;-)
diff -urN linux-2.6.0-test2/drivers/block/ll_rw_blk.c linux-2.6.0-test2-unplug/drivers/block/ll_rw_blk.c
--- linux-2.6.0-test2/drivers/block/ll_rw_blk.c 2003-07-27 19:02:48.000000000 -0600
+++ linux-2.6.0-test2-unplug/drivers/block/ll_rw_blk.c 2003-07-28 00:36:35.366537142 -0600
@@ -1027,10 +1027,10 @@
*/
static inline void __generic_unplug_device(request_queue_t *q)
{
- if (!blk_remove_plug(q))
+ if (test_bit(QUEUE_FLAG_STOPPED, &q->queue_flags))
return;

- if (test_bit(QUEUE_FLAG_STOPPED, &q->queue_flags))
+ if (!blk_remove_plug(q))
return;

del_timer(&q->unplug_timer);
\
 
 \ /
  Last update: 2005-03-22 13:47    [W:0.658 / U:0.048 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site