diff --git a/block/blk-cbt.c b/block/blk-cbt.c index 7a4303f720f..7a437356a24 100644 --- a/block/blk-cbt.c +++ b/block/blk-cbt.c @@ -177,13 +179,16 @@ static void blk_cbt_add(struct request_queue *q, blkcnt_t start, blkcnt_t len) goto out_rcu; } ex = this_cpu_ptr(cbt->cache); + local_irq_disable(); if (ex->start + ex->len == start) { ex->len += len; + local_irq_enable(); goto out_rcu; } old = *ex; ex->start = start; ex->len = len; + local_irq_enable(); if (likely(old.len)) __blk_cbt_set(cbt, old.start, old.len, 1, 1);