Using keventd for running request_fns is risky because keventd itself can block on disk I/O. drivers/block/ll_rw_blk.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff -puN drivers/block/ll_rw_blk.c~unplug-use-kblockd drivers/block/ll_rw_blk.c --- 25/drivers/block/ll_rw_blk.c~unplug-use-kblockd 2003-05-16 21:43:30.000000000 -0700 +++ 25-akpm/drivers/block/ll_rw_blk.c 2003-05-16 21:43:30.000000000 -0700 @@ -1018,7 +1018,7 @@ static void blk_unplug_timeout(unsigned { request_queue_t *q = (request_queue_t *)data; - schedule_work(&q->unplug_work); + kblockd_schedule_work(&q->unplug_work); } /** @@ -1147,7 +1147,7 @@ void blk_cleanup_queue(request_queue_t * elevator_exit(q); del_timer_sync(&q->unplug_timer); - flush_scheduled_work(); + kblockd_flush(); mempool_destroy(rl->rq_pool); _