diff options
author | Tejun Heo <tj@kernel.org> | 2012-02-07 07:51:30 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2012-02-07 07:51:30 +0100 |
commit | 11a3122f6cf2d988a77eb8883d0fc49cd013a6d5 (patch) | |
tree | ded8ea8a2982754ff0c58448a7ed2e59487104cb /fs/ioprio.c | |
parent | 822bfa51ce44f2c63c300fdb76dc99c4d5a5ca9f (diff) | |
download | linux-11a3122f6cf2d988a77eb8883d0fc49cd013a6d5.tar.gz linux-11a3122f6cf2d988a77eb8883d0fc49cd013a6d5.tar.bz2 linux-11a3122f6cf2d988a77eb8883d0fc49cd013a6d5.zip |
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 'fs/ioprio.c')
-rw-r--r-- | fs/ioprio.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ioprio.c b/fs/ioprio.c index f84b380d65e5..0f1b9515213b 100644 --- a/fs/ioprio.c +++ b/fs/ioprio.c @@ -51,7 +51,7 @@ int set_task_ioprio(struct task_struct *task, int ioprio) ioc = get_task_io_context(task, GFP_ATOMIC, NUMA_NO_NODE); if (ioc) { ioc_ioprio_changed(ioc, ioprio); - put_io_context(ioc, NULL); + put_io_context(ioc); } return err; |