aboutsummaryrefslogtreecommitdiffstats
path: root/block/cfq-iosched.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2012-02-07 01:51:30 -0500
committerJens Axboe <axboe@kernel.dk>2012-02-07 01:51:30 -0500
commit11a3122f6cf2d988a77eb8883d0fc49cd013a6d5 (patch)
treeded8ea8a2982754ff0c58448a7ed2e59487104cb /block/cfq-iosched.c
parent822bfa51ce44f2c63c300fdb76dc99c4d5a5ca9f (diff)
block: strip out locking optimization in put_io_context()
put_io_context() performed a complex trylock dancing to avoid deferring ioc release to workqueue. It was also broken on UP because trylock was always assumed to succeed which resulted in unbalanced preemption count. While there are ways to fix the UP breakage, even the most pathological microbench (forced ioc allocation and tight fork/exit loop) fails to show any appreciable performance benefit of the optimization. Strip it out. If there turns out to be workloads which are affected by this change, simpler optimization from the discussion thread can be applied later. Signed-off-by: Tejun Heo <tj@kernel.org> LKML-Reference: <1328514611.21268.66.camel@sli10-conroe> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/cfq-iosched.c')
-rw-r--r--block/cfq-iosched.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index da21c24dbed3..5684df6848bc 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -1794,7 +1794,7 @@ __cfq_slice_expired(struct cfq_data *cfqd, struct cfq_queue *cfqq,
1794 cfqd->active_queue = NULL; 1794 cfqd->active_queue = NULL;
1795 1795
1796 if (cfqd->active_cic) { 1796 if (cfqd->active_cic) {
1797 put_io_context(cfqd->active_cic->icq.ioc, cfqd->queue); 1797 put_io_context(cfqd->active_cic->icq.ioc);
1798 cfqd->active_cic = NULL; 1798 cfqd->active_cic = NULL;
1799 } 1799 }
1800} 1800}