btrfs: explicitly protect ->last_byte_to_unpin in unpin_extent_range
authorJosef Bacik <josef@toxicpanda.com>
Fri, 23 Oct 2020 13:58:06 +0000 (09:58 -0400)
committerDavid Sterba <dsterba@suse.com>
Tue, 8 Dec 2020 14:54:02 +0000 (15:54 +0100)
commit2ca08c56e813323ee470f7fd8d836f30600e3960
tree61746db82d5df67a1e90219b62a4c71c4dfb36d0
parent27d56e62e4748c2135650c260024e9904b8c1a0a
btrfs: explicitly protect ->last_byte_to_unpin in unpin_extent_range

Currently unpin_extent_range happens in the transaction commit context,
so we are protected from ->last_byte_to_unpin changing while we're
unpinning, because any new transactions would have to wait for us to
complete before modifying ->last_byte_to_unpin.

However in the future we may want to change how this works, for instance
with async unpinning or other such TODO items.  To prepare for that
future explicitly protect ->last_byte_to_unpin with the commit_root_sem
so we are sure it won't change while we're doing our work.

Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent-tree.c