Commit cdc419db authored by Alan Huang's avatar Alan Huang Committed by Kent Overstreet
Browse files

bcachefs: Merge the condition to avoid additional invocation



If the lock has been acquired and unlocked, we don't have to do clear
and wakeup again, though harmless since we hold the intent lock. Merge
the condition might be clearer.

Signed-off-by: default avatarAlan Huang <mmpgouride@gmail.com>
Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 9c13cc9c
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -491,8 +491,12 @@ static int six_lock_slowpath(struct six_lock *lock, enum six_lock_type type,
				list_del(&wait->list);
			raw_spin_unlock(&lock->wait_lock);

			if (unlikely(acquired))
			if (unlikely(acquired)) {
				do_six_unlock_type(lock, type);
			} else if (type == SIX_LOCK_write) {
				six_clear_bitmask(lock, SIX_LOCK_HELD_write);
				six_lock_wakeup(lock, atomic_read(&lock->state), SIX_LOCK_read);
			}
			break;
		}

@@ -501,10 +505,6 @@ static int six_lock_slowpath(struct six_lock *lock, enum six_lock_type type,

	__set_current_state(TASK_RUNNING);
out:
	if (ret && type == SIX_LOCK_write) {
		six_clear_bitmask(lock, SIX_LOCK_HELD_write);
		six_lock_wakeup(lock, atomic_read(&lock->state), SIX_LOCK_read);
	}
	trace_contention_end(lock, 0);

	return ret;