Commit eebc21d
blk-iocost: move wbt_enable/disable_default() out of spinlock
There are following smatch warning:
block/blk-wbt.c:843 wbt_init() warn: sleeping in atomic context
ioc_qos_write() <- disables preempt
-> wbt_enable_default()
-> wbt_init()
wbt_init() will be called from wbt_enable_default() if wbt is not
initialized, currently this is only possible in blk_register_queue(), hence
wbt_init() will never be called from iocost and this warning is false
positive.
However, we might support rq_qos destruction dynamically in the future,
and it's better to prevent that, hence move wbt_enable_default() outside
'ioc->lock'. This is safe because queue is still freezed.
Reported-by: Dan Carpenter <error27@gmail.com>
Link: https://lore.kernel.org/lkml/Y+Ja5SRs886CEz7a@kadam/
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20230527010644.647900-5-yukuai1@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>1 parent 06257fd commit eebc21d
1 file changed
Lines changed: 5 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3301 | 3301 | | |
3302 | 3302 | | |
3303 | 3303 | | |
3304 | | - | |
3305 | 3304 | | |
3306 | 3305 | | |
3307 | 3306 | | |
3308 | | - | |
3309 | 3307 | | |
3310 | 3308 | | |
3311 | 3309 | | |
| |||
3318 | 3316 | | |
3319 | 3317 | | |
3320 | 3318 | | |
| 3319 | + | |
| 3320 | + | |
| 3321 | + | |
| 3322 | + | |
| 3323 | + | |
3321 | 3324 | | |
3322 | 3325 | | |
3323 | 3326 | | |
| |||
0 commit comments