Commit 11431e2
blk-iocost: fix lockdep warning on blkcg->lock
blkcg->lock depends on q->queue_lock which may depend on another driver
lock required in irq context, one example is dm-thin:
Chain exists of:
&pool->lock#3 --> &q->queue_lock --> &blkcg->lock
Possible interrupt unsafe locking scenario:
CPU0 CPU1
---- ----
lock(&blkcg->lock);
local_irq_disable();
lock(&pool->lock#3);
lock(&q->queue_lock);
<Interrupt>
lock(&pool->lock#3);
Fix the issue by using spin_lock_irq(&blkcg->lock) in ioc_weight_write().
Cc: Tejun Heo <tj@kernel.org>
Reported-by: Bruno Goncalves <bgoncalv@redhat.com>
Link: https://lore.kernel.org/linux-block/CA+QYu4rzz6079ighEanS3Qq_Dmnczcf45ZoJoHKVLVATTo1e4Q@mail.gmail.com/T/#u
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Acked-by: Tejun Heo <tj@kernel.org>
Link: https://lore.kernel.org/r/20210803070608.1766400-1-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>1 parent fb7b9b0 commit 11431e2
1 file changed
Lines changed: 4 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3061 | 3061 | | |
3062 | 3062 | | |
3063 | 3063 | | |
3064 | | - | |
| 3064 | + | |
3065 | 3065 | | |
3066 | 3066 | | |
3067 | 3067 | | |
3068 | 3068 | | |
3069 | 3069 | | |
3070 | | - | |
| 3070 | + | |
3071 | 3071 | | |
3072 | 3072 | | |
3073 | | - | |
| 3073 | + | |
3074 | 3074 | | |
3075 | 3075 | | |
3076 | | - | |
| 3076 | + | |
3077 | 3077 | | |
3078 | 3078 | | |
3079 | 3079 | | |
| |||
0 commit comments