btrfs: annotate block group access with data_race() when sorting for reclaim
authorFilipe Manana <fdmanana@suse.com>
Mon, 8 Sep 2025 11:51:11 +0000 (12:51 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 15 Sep 2025 03:25:43 +0000 (05:25 +0200)
commit80eb65ccf6f72dc37b972583fe71cd8a50ff7e51
treea11e23151f9939a13f2f3bee9d13ebbdd7da8aba
parent8679d2687c351824d08cf1f0e86f3b65f22a00fe
btrfs: annotate block group access with data_race() when sorting for reclaim

When sorting the block group list for reclaim we are using a block group's
used bytes counter without taking the block group's spinlock, so we can
race with a concurrent task updating it (at btrfs_update_block_group()),
which makes tools like KCSAN unhappy and report a race.

Since the sorting is not strictly needed from a functional perspective
and such races should rarely cause any ordering changes (only load/store
tearing could cause them), not to mention that after the sorting the
ordering may no longer be accurate due to concurrent allocations and
deallocations of extents in a block group, annotate the accesses to the
used counter with data_race() to silence KCSAN and similar tools.

Reviewed-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/block-group.c