diff options
Diffstat (limited to 'fs/bcachefs/six.c')
| -rw-r--r-- | fs/bcachefs/six.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/fs/bcachefs/six.c b/fs/bcachefs/six.c index 9dd4b71e63ab..464b1313d358 100644 --- a/fs/bcachefs/six.c +++ b/fs/bcachefs/six.c @@ -764,15 +764,19 @@ EXPORT_SYMBOL_GPL(six_lock_pcpu_alloc); */ struct six_lock_count six_lock_counts(struct six_lock *lock) { - struct six_lock_count ret = { 0, lock->state.intent_lock }; + struct six_lock_count ret; + + ret.n[SIX_LOCK_read] = 0; + 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.read += lock->state.read_lock; + ret.n[SIX_LOCK_read] += lock->state.read_lock; else { int cpu; for_each_possible_cpu(cpu) - ret.read += *per_cpu_ptr(lock->readers, cpu); + ret.n[SIX_LOCK_read] += *per_cpu_ptr(lock->readers, cpu); } return ret; |
