diff options
author | Anders Roxell <anders.roxell@linaro.org> | 2014-06-30 15:44:45 +0200 |
---|---|---|
committer | Anders Roxell <anders.roxell@linaro.org> | 2014-06-30 16:16:08 +0200 |
commit | 9e32061a8e77bf33d1d9955ca5acb3470935fd06 (patch) | |
tree | 1a6bc5cc8510a5233b7905ed9f13f2478a7f4109 /block | |
parent | 0cbd8a2041247e23ce09e99253c312027c76073e (diff) |
Changes since v3.14.2-rt2
- rwsem readers are now not allowed to nest. A patch rom Steven Rostedt.
- a few bugs were fixed in the hotplug code which were made during the
v3.14 port. Fixed by Mike Galbraith.
- Mike Galbraith sent a patch which might fix lazy preempt on x86_64.
Patch applied and my machine still explodes therefore lazy preempt
remains off on x86_64.
- Mike Galbraith sent a few patches to get cpu hoplug to work. This
includes lg_global_trylock_relax().
- A few push downs of migrate_disable() (where we call migrate_disable()
after the rt_mutex_trylock()) have been reverted. It seems hotplug is
not too happy about this. A patch by Steven Rostedt and and Mike
Galbraith
- There was a complaint about a backrace from run_local_timers() in UP
mode because a spin_try_lock() failed. _This_ particular case was not
an error. This optimization was for FULL_NO_HZ which is pointless on
UP because there is no spare CPU. Therefore, this optimization is
disabled in UP mode and the backtrace is gone. Reported by Stanislav
Meduna.
- block-mq notifier uses now a spinlock and runs during CPU_POST_DEAD
instead at CPU_DEAD time. lockdep complained about the sleeping
ctx->lock within the rawlock (blk_mq_cpu_notify_lock) and CPU_DEAD
runs with irqs off.
Known issues:
- bcache is disabled.
- lazy preempt on x86_64 leads to a crash with some load.
- CPU hotplug works in general. Steven's test script however
deadlocks usually on the second invocation.
Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
Diffstat (limited to 'block')
-rw-r--r-- | block/blk-mq.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/block/blk-mq.c b/block/blk-mq.c index 25afbcc3a742..5fb26f785320 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -48,9 +48,14 @@ static struct blk_mq_ctx *blk_mq_get_ctx(struct request_queue *q) return __blk_mq_get_ctx(q, get_cpu_light()); } -static void blk_mq_put_ctx(struct blk_mq_ctx *ctx) +static void __blk_mq_put_ctx(struct blk_mq_ctx *ctx) { spin_unlock(&ctx->cpu_lock); +} + +static void blk_mq_put_ctx(struct blk_mq_ctx *ctx) +{ + __blk_mq_put_ctx(ctx); put_cpu_light(); } @@ -980,6 +985,7 @@ static void blk_mq_hctx_notify(void *data, unsigned long action, clear_bit(ctx->index_hw, hctx->ctx_map); } spin_unlock(&ctx->lock); + __blk_mq_put_ctx(ctx); if (list_empty(&tmp)) return; |