mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
fs: buffer: use clear_and_wake_up_bit() in unlock_buffer()
Use `clear_and_wake_up_bit()` in `unlock_buffer()`, since the helper was introduced in 'commit8236b0ae31("bdi: wake up concurrent wb_shutdown() callers.")' as a generic way of doing the same sequence of operations: clear_bit_unlock(); smp_mb__after_atomic(); wake_up_bit(); The helper was implemented to avoid bugs caused by forgetting to call `wake_up_bit()` after `clear_bit_unlock()`. Since `unlock_buffer()` predates git and was last modified in 'commit4e857c58ef("arch: Mass conversion of smp_mb__*()")', years before `clear_and_wake_up_bit()`, it still uses the open-coded sequence. Replace the open-coded sequence with the helper to avoid duplicate code and reduce code paths to maintain. Suggested-by: shuo chen <1289151713@qq.com> Link: https://lore.kernel.org/kernelnewbies/agzoqV835-co4kAN@guidai/T/#t Signed-off-by: Agatha Isabelle Moreira <code@agatha.dev> Link: https://patch.msgid.link/ag4SD-mkmn5IbuN7@guidai Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
This commit is contained in:
parent
ec3f4e0443
commit
0432b89f61
|
|
@ -74,9 +74,7 @@ EXPORT_SYMBOL(__lock_buffer);
|
|||
|
||||
void unlock_buffer(struct buffer_head *bh)
|
||||
{
|
||||
clear_bit_unlock(BH_Lock, &bh->b_state);
|
||||
smp_mb__after_atomic();
|
||||
wake_up_bit(&bh->b_state, BH_Lock);
|
||||
clear_and_wake_up_bit(BH_Lock, &bh->b_state);
|
||||
}
|
||||
EXPORT_SYMBOL(unlock_buffer);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user