diff --git a/block/blk-stat.h b/block/blk-stat.h index f4a1568e81a415789e63f045a3d99fe932962ce5..17b47a86eefb331c5d2266243183c2c71b10e2bc 100644 --- a/block/blk-stat.h +++ b/block/blk-stat.h @@ -145,6 +145,11 @@ static inline void blk_stat_activate_nsecs(struct blk_stat_callback *cb, mod_timer(&cb->timer, jiffies + nsecs_to_jiffies(nsecs)); } +static inline void blk_stat_deactivate(struct blk_stat_callback *cb) +{ + del_timer_sync(&cb->timer); +} + /** * blk_stat_activate_msecs() - Gather block statistics during a time window in * milliseconds. diff --git a/block/blk-wbt.c b/block/blk-wbt.c index 40207edd1d89f3660f2d23fa0a1bc879bf7b17c3..463e4eb80287df806c2a09005a8a9aac19e44aa0 100644 --- a/block/blk-wbt.c +++ b/block/blk-wbt.c @@ -708,8 +708,10 @@ void wbt_disable_default(struct request_queue *q) if (!rqos) return; rwb = RQWB(rqos); - if (rwb->enable_state == WBT_STATE_ON_DEFAULT) + if (rwb->enable_state == WBT_STATE_ON_DEFAULT) { + blk_stat_deactivate(rwb->cb); rwb->wb_normal = 0; + } } EXPORT_SYMBOL_GPL(wbt_disable_default);