login
Header Space

 
 

Block: Prevent busy looping

Score:
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Jens Axboe <jens.axboe@...>
Cc: <linux-kernel@...>, <stable@...>
Date: Wednesday, April 16, 2008 - 11:37 am

blk_run_queue() as well as blk_start_queue() plug the device on reentry
and schedule blk_unplug_work() right afterwards. However,
blk_plug_device() takes care of that already and makes sure that there is
a short delay before blk_unplug_work() is scheduled. This is important
to prevent busy looping and possibly system lockups as observed here:
<http://permalink.gmane.org/gmane.linux.ide/28351>.

Signed-off-by: Elias Oltmanns <eo@nebensachen.de>
Cc: <stable@kernel.org>
---

 block/blk-core.c |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/block/blk-core.c b/block/blk-core.c
index 2a438a9..e88a6f2 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -344,7 +344,6 @@ void blk_start_queue(struct request_queue *q)
 		clear_bit(QUEUE_FLAG_REENTER, &q->queue_flags);
 	} else {
 		blk_plug_device(q);
-		kblockd_schedule_work(&q->unplug_work);
 	}
 }
 EXPORT_SYMBOL(blk_start_queue);
@@ -412,7 +411,6 @@ void blk_run_queue(struct request_queue *q)
 			clear_bit(QUEUE_FLAG_REENTER, &q->queue_flags);
 		} else {
 			blk_plug_device(q);
-			kblockd_schedule_work(&q->unplug_work);
 		}
 	}
 


--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Block: Prevent busy looping, Elias Oltmanns, (Wed Apr 16, 11:37 am)
Re: Block: Prevent busy looping, Jens Axboe, (Wed Apr 16, 12:31 pm)
Re: Block: Prevent busy looping, Elias Oltmanns, (Wed Apr 16, 6:24 pm)
Re: Block: Prevent busy looping, Jens Axboe, (Thu Apr 17, 3:13 am)
Re: Block: Prevent busy looping, Jens Axboe, (Wed Apr 16, 12:42 pm)
speck-geostationary