aboutsummaryrefslogtreecommitdiff
path: root/fs/bcachefs/six.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/bcachefs/six.c')
-rw-r--r--fs/bcachefs/six.c11
1 files changed, 1 insertions, 10 deletions
diff --git a/fs/bcachefs/six.c b/fs/bcachefs/six.c
index f75387b9da88..32ad545ba570 100644
--- a/fs/bcachefs/six.c
+++ b/fs/bcachefs/six.c
@@ -144,17 +144,8 @@ static int __do_six_trylock_type(struct six_lock *lock,
* lock, issue a wakeup because we might have caused a
* spurious trylock failure:
*/
-#if 0
- /*
- * This code should be sufficient, but we're seeing unexplained
- * lost wakeups:
- */
if (old.write_locking)
ret = -1 - SIX_LOCK_write;
-#else
- if (!ret)
- ret = -1 - SIX_LOCK_write;
-#endif
} else if (type == SIX_LOCK_write && lock->readers) {
if (try) {
atomic64_add(__SIX_VAL(write_locking, 1),
@@ -332,7 +323,7 @@ static bool __six_relock_type(struct six_lock *lock, enum six_lock_type type,
*/
if (ret)
six_acquire(&lock->dep_map, 1, type == SIX_LOCK_read, ip);
- else
+ else if (old.write_locking)
six_lock_wakeup(lock, old, SIX_LOCK_write);
return ret;