mirror of
https://github.com/torvalds/linux.git
synced 2026-07-31 03:27:03 +02:00
btrfs: reorganize logic at free_extent_buffer() for better readability
It's hard to read the logic to break out of the while loop since it's a
very long expression consisting of a logical or of two composite
expressions, each one composed by a logical and. Further each one is also
testing for the EXTENT_BUFFER_UNMAPPED bit, making it more verbose than
necessary.
So change from this:
if ((!test_bit(EXTENT_BUFFER_UNMAPPED, &eb->bflags) && refs <= 3)
|| (test_bit(EXTENT_BUFFER_UNMAPPED, &eb->bflags) &&
refs == 1))
break;
To this:
if (test_bit(EXTENT_BUFFER_UNMAPPED, &eb->bflags)) {
if (refs == 1)
break;
} else if (refs <= 3) {
break;
}
At least on x86_64 using gcc 9.3.0, this doesn't change the object size.
Reviewed-by: Boris Burkov <boris@bur.io>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
41e4ea0bf5
commit
71c086b30d
|
|
@ -3486,10 +3486,13 @@ void free_extent_buffer(struct extent_buffer *eb)
|
|||
|
||||
refs = atomic_read(&eb->refs);
|
||||
while (1) {
|
||||
if ((!test_bit(EXTENT_BUFFER_UNMAPPED, &eb->bflags) && refs <= 3)
|
||||
|| (test_bit(EXTENT_BUFFER_UNMAPPED, &eb->bflags) &&
|
||||
refs == 1))
|
||||
if (test_bit(EXTENT_BUFFER_UNMAPPED, &eb->bflags)) {
|
||||
if (refs == 1)
|
||||
break;
|
||||
} else if (refs <= 3) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (atomic_try_cmpxchg(&eb->refs, &refs, refs - 1))
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user