bcachefs: Don't disable preemption unnecessarily
authorKent Overstreet <kent.overstreet@gmail.com>
Fri, 11 Jun 2021 03:34:02 +0000 (23:34 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:07 +0000 (17:09 -0400)
Small improvements to some percpu utility code.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
fs/bcachefs/util.c
fs/bcachefs/util.h

index f183c9d80e2c2dab2d3c0d6eddb0a4d9946e4c85..f287bca8498dce507b14cb0825d3d31fd4215d34 100644 (file)
@@ -893,13 +893,9 @@ void eytzinger0_find_test(void)
  */
 u64 *bch2_acc_percpu_u64s(u64 __percpu *p, unsigned nr)
 {
-       u64 *ret;
+       u64 *ret = this_cpu_ptr(p);
        int cpu;
 
-       preempt_disable();
-       ret = this_cpu_ptr(p);
-       preempt_enable();
-
        for_each_possible_cpu(cpu) {
                u64 *i = per_cpu_ptr(p, cpu);
 
index 91aa8c0a0e0944ef69d352a9b9be699c6aae160e..a0cbebf190b48a35f621c1634a37328e9425e232 100644 (file)
@@ -715,10 +715,7 @@ static inline void percpu_u64_set(u64 __percpu *dst, u64 src)
 
        for_each_possible_cpu(cpu)
                *per_cpu_ptr(dst, cpu) = 0;
-
-       preempt_disable();
-       *this_cpu_ptr(dst) = src;
-       preempt_enable();
+       this_cpu_write(*dst, src);
 }
 
 static inline void acc_u64s(u64 *acc, const u64 *src, unsigned nr)