diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2024-06-03 17:03:54 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2024-06-03 20:08:06 -0400 |
commit | 7d79fba1af3d41b148009d3dc76d813b07f01f69 (patch) | |
tree | bee9ba49d247a1c74d1c1e7c9c14b37a243bba89 /libbcachefs/two_state_shared_lock.h | |
parent | d456f9e97aebe649a59cc2858d5f28749b77d1d0 (diff) |
Update bcachefs sources to f81dc88f0c80 bcachefs: bch2_btree_insert() - add btree iter flags
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'libbcachefs/two_state_shared_lock.h')
-rw-r--r-- | libbcachefs/two_state_shared_lock.h | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/libbcachefs/two_state_shared_lock.h b/libbcachefs/two_state_shared_lock.h index 90580177..7f647846 100644 --- a/libbcachefs/two_state_shared_lock.h +++ b/libbcachefs/two_state_shared_lock.h @@ -36,15 +36,14 @@ static inline void bch2_two_state_unlock(two_state_lock_t *lock, int s) static inline bool bch2_two_state_trylock(two_state_lock_t *lock, int s) { long i = s ? 1 : -1; - long v = atomic_long_read(&lock->v), old; + long old; + old = atomic_long_read(&lock->v); do { - old = v; - - if (i > 0 ? v < 0 : v > 0) + if (i > 0 ? old < 0 : old > 0) return false; - } while ((v = atomic_long_cmpxchg_acquire(&lock->v, - old, old + i)) != old); + } while (!atomic_long_try_cmpxchg_acquire(&lock->v, &old, old + i)); + return true; } |