]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - linux/six.c
Update bcachefs sources to 1b14994029 bcachefs: Fragmentation LRU
[bcachefs-tools-debian] / linux / six.c
index 41337a7faeb9710b95cac7a97a9805fac278b9c6..5a6eadc0e8405459ce10bf9b72cbd0db42b07eaa 100644 (file)
@@ -833,19 +833,12 @@ struct six_lock_count six_lock_counts(struct six_lock *lock)
 {
        struct six_lock_count ret;
 
-       ret.n[SIX_LOCK_read]    = 0;
+       ret.n[SIX_LOCK_read]    = !lock->readers
+               ? lock->state.read_lock
+               : pcpu_read_count(lock);
        ret.n[SIX_LOCK_intent]  = lock->state.intent_lock + lock->intent_lock_recurse;
        ret.n[SIX_LOCK_write]   = lock->state.seq & 1;
 
-       if (!lock->readers)
-               ret.n[SIX_LOCK_read] += lock->state.read_lock;
-       else {
-               int cpu;
-
-               for_each_possible_cpu(cpu)
-                       ret.n[SIX_LOCK_read] += *per_cpu_ptr(lock->readers, cpu);
-       }
-
        return ret;
 }
 EXPORT_SYMBOL_GPL(six_lock_counts);