aboutsummaryrefslogtreecommitdiffstats
path: root/block/blk-core.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2013-05-14 13:52:37 -0700
committerTejun Heo <tj@kernel.org>2013-05-14 13:52:37 -0700
commit7f52f98c2a83339b89a27d01296354e5dbb90ad0 (patch)
tree90306fe5385ad770db8be8b1242ee5a3f114ca84 /block/blk-core.c
parentblk-throttle: separate out throtl_service_queue->pending_timer from throtl_data->dispatch_work (diff)
downloadlinux-dev-7f52f98c2a83339b89a27d01296354e5dbb90ad0.tar.xz
linux-dev-7f52f98c2a83339b89a27d01296354e5dbb90ad0.zip
blk-throttle: implement dispatch looping
throtl_select_dispatch() only dispatches throtl_quantum bios on each invocation. blk_throtl_dispatch_work_fn() in turn depends on throtl_schedule_next_dispatch() scheduling the next dispatch window immediately so that undue delays aren't incurred. This effectively chains multiple dispatch work item executions back-to-back when there are more than throtl_quantum bios to dispatch on a given tick. There is no reason to finish the current work item just to repeat it immediately. This patch makes throtl_schedule_next_dispatch() return %false without doing anything if the current dispatch window is still open and updates blk_throtl_dispatch_work_fn() repeat dispatching after cpu_relax() on %false return. This change will help implementing hierarchy support as dispatching will be done from pending_timer and immediate reschedule of timer function isn't supported and doesn't make much sense. While this patch changes how dispatch behaves when there are more than throtl_quantum bios to dispatch on a single tick, the behavior change is immaterial. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Vivek Goyal <vgoyal@redhat.com>
Diffstat (limited to 'block/blk-core.c')
0 files changed, 0 insertions, 0 deletions