mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-07 10:40:47 -05:00
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: Alan Huang <mmpgouride@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
committed by
Kent Overstreet
parent
9c13cc9c7d
commit
cdc419dbf2
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user