When working with percpu variables the only guarantee we need is that
the process is not preempted. So let's do this by using the more
idiomatic get_cpu_ptr/put_cpu_ptr rather than the more heavyweight
local_irq_disable. No functional changes.

Signed-off-by: Nikolay Borisov <nikolay.bori...@virtuozzo.com>
---
 block/blk-cbt.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/block/blk-cbt.c b/block/blk-cbt.c
index 8baeb2804a61..d49ca7fc2865 100644
--- a/block/blk-cbt.c
+++ b/block/blk-cbt.c
@@ -238,17 +238,16 @@ static void blk_cbt_add(struct request_queue *q, blkcnt_t 
start, blkcnt_t len)
                __blk_cbt_set(cbt, start, len, 1, 1, NULL, NULL);
                goto out_rcu;
        }
-       local_irq_disable();
-       ex = this_cpu_ptr(cbt->cache);
+       ex = get_cpu_ptr(cbt->cache);
        if (ex->start + ex->len == start) {
                ex->len += len;
-               local_irq_enable();
+               put_cpu_ptr(cbt->cache);
                goto out_rcu;
        }
        old = *ex;
        ex->start = start;
        ex->len = len;
-       local_irq_enable();
+       put_cpu_ptr(cbt->cache);
 
        if (likely(old.len))
                __blk_cbt_set(cbt, old.start, old.len, 1, 1, NULL, NULL);
-- 
2.34.1

_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to