blk-throttle: dispatch to throtl_data->service_queue.bio_lists[]
authorTejun Heo <tj@kernel.org>
Tue, 14 May 2013 20:52:35 +0000 (13:52 -0700)
committerTejun Heo <tj@kernel.org>
Tue, 14 May 2013 20:52:35 +0000 (13:52 -0700)
commit651930bc1c2a2550fde93a8cfa1a201c363a0ca1
treee043b460d7a681d846057a52bd8ed221dfaa1f6e
parent73f0d49a9637a7ec3448a62a0042e35b14ba18a3
blk-throttle: dispatch to throtl_data->service_queue.bio_lists[]

throtl_service_queues will eventually form a tree which is anchored at
throtl_data->service_queue and queue bios will climb the tree to the
top service_queue to be executed.

This patch makes the dispatch paths in blk_throtl_dispatch_work_fn()
and blk_throtl_drain() to dispatch bios to
throtl_data->service_queue.bio_lists[] instead of the on-stack
bio_lists.  This will keep the final dispatch to the top level
service_queue share the same mechanism as dispatches through the rest
of the hierarchy.

As bio's should be issued in a sleepable context,
blk_throtl_dispatch_work_fn() transfers all dispatched bio's from the
service_queue bio_lists[] into an onstack one before dropping
queue_lock and issuing the bio's.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Vivek Goyal <vgoyal@redhat.com>
block/blk-throttle.c