mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-08-18 14:59:48 +00:00
34 lines
963 B
Diff
34 lines
963 B
Diff
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
Date: Tue, 14 Jul 2015 14:26:34 +0200
|
|
Subject: block/mq: do not invoke preempt_disable()
|
|
|
|
preempt_disable() and get_cpu() don't play well together with the sleeping
|
|
locks it tries to allocate later.
|
|
It seems to be enough to replace it with get_cpu_light() and migrate_disable().
|
|
|
|
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
---
|
|
block/blk-mq.c | 6 +++---
|
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
|
|
--- a/block/blk-mq.c
|
|
+++ b/block/blk-mq.c
|
|
@@ -1560,14 +1560,14 @@ static void __blk_mq_delay_run_hw_queue(
|
|
return;
|
|
|
|
if (!async && !(hctx->flags & BLK_MQ_F_BLOCKING)) {
|
|
- int cpu = get_cpu();
|
|
+ int cpu = get_cpu_light();
|
|
if (cpumask_test_cpu(cpu, hctx->cpumask)) {
|
|
__blk_mq_run_hw_queue(hctx);
|
|
- put_cpu();
|
|
+ put_cpu_light();
|
|
return;
|
|
}
|
|
|
|
- put_cpu();
|
|
+ put_cpu_light();
|
|
}
|
|
|
|
kblockd_mod_delayed_work_on(blk_mq_hctx_next_cpu(hctx), &hctx->run_work,
|