commit feceaadd75c035ad2999b91266c4f3cd3c928d7d Merge: 0c54ad0 763414b Author: Stephen Rothwell Date: Mon Mar 7 13:19:47 2011 +1100 Merge remote-tracking branch 'block/for-next' Conflicts: block/blk-flush.c commit 1654e7411a1ad4999fe7890ef51d2a2bbb1fcf76 Author: Tejun Heo Date: Wed Mar 2 08:48:05 2011 -0500 block: add @force_kblockd to __blk_run_queue() __blk_run_queue() automatically either calls q->request_fn() directly or schedules kblockd depending on whether the function is recursed. blk-flush implementation needs to be able to explicitly choose kblockd. Add @force_kblockd. All the current users are converted to specify %false for the parameter and this patch doesn't introduce any behavior change. stable: This is prerequisite for fixing ide oops caused by the new blk-flush implementation. Signed-off-by: Tejun Heo Cc: Jan Beulich Cc: James Bottomley Cc: stable@kernel.org Signed-off-by: Jens Axboe commit 763414b132ab9d6f8e23657a87cc1dc823d1e34e Merge: 6148a47 c186794 Author: Jens Axboe Date: Fri Feb 11 11:11:29 2011 +0100 Merge branch 'for-2.6.39/core' into for-next Conflicts: block/cfq-iosched.c Signed-off-by: Jens Axboe commit c186794dbb466b45cf40f942f2d09d6d5b4b0e42 Author: Mike Snitzer Date: Fri Feb 11 11:08:00 2011 +0100 block: share request flush fields with elevator_private Flush requests are never put on the IO scheduler. Convert request structure's elevator_private* into an array and have the flush fields share a union with it. Reclaim the space lost in 'struct request' by moving 'completion_data' back in the union with 'rb_node'. Signed-off-by: Mike Snitzer Acked-by: Vivek Goyal Acked-by: Tejun Heo Signed-off-by: Jens Axboe commit 02a8f01b5a9f396d0327977af4c232d0f94c45fd Author: Justin TerAvest Date: Wed Feb 9 14:20:03 2011 +0100 cfq-iosched: Don't wait if queue already has requests. Commit 7667aa0630407bc07dc38dcc79d29cc0a65553c1 added logic to wait for the last queue of the group to become busy (have at least one request), so that the group does not lose out for not being continuously backlogged. The commit did not check for the condition that the last queue already has some requests. As a result, if the queue already has requests, wait_busy is set. Later on, cfq_select_queue() checks the flag, and decides that since the queue has a request now and wait_busy is set, the queue is expired. This results in early expiration of the queue. This patch fixes the problem by adding a check to see if queue already has requests. If it does, wait_busy is not set. As a result, time slices do not expire early. The queues with more than one request are usually buffered writers. Testing shows improvement in isolation between buffered writers. Cc: stable@kernel.org Signed-off-by: Justin TerAvest Reviewed-by: Gui Jianfeng Acked-by: Vivek Goyal Signed-off-by: Jens Axboe