From: Andrew Morton Cc: Jens Axboe Signed-off-by: Andrew Morton --- block/ll_rw_blk.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff -puN block/ll_rw_blk.c~blk_execute_rq_nowait-speedup block/ll_rw_blk.c --- devel/block/ll_rw_blk.c~blk_execute_rq_nowait-speedup 2006-03-06 01:32:22.000000000 -0800 +++ devel-akpm/block/ll_rw_blk.c 2006-03-06 01:33:53.000000000 -0800 @@ -2459,10 +2459,12 @@ void blk_execute_rq_nowait(request_queue rq->rq_disk = bd_disk; rq->flags |= REQ_NOMERGE; rq->end_io = done; - elv_add_request(q, rq, where, 1); - generic_unplug_device(q); + WARN_ON(irqs_disabled()); + spin_lock_irq(q->queue_lock); + __elv_add_request(q, rq, where, 1); + __generic_unplug_device(q); + spin_unlock_irq(q->queue_lock); } - EXPORT_SYMBOL_GPL(blk_execute_rq_nowait); /** _