]> git.baikalelectronics.ru Git - kernel.git/commit
btrfs: defrag: introduce helper to defrag a range
authorQu Wenruo <wqu@suse.com>
Fri, 6 Aug 2021 08:12:38 +0000 (16:12 +0800)
committerDavid Sterba <dsterba@suse.com>
Tue, 26 Oct 2021 17:07:57 +0000 (19:07 +0200)
commit9a576a8544d4aa25da5aad87b098fc6a4d44283b
tree43b01bc01bf198945c3ba8e7ab956e163a8c91e1
parentbb11ead69ba07bcc464fc2f2ee59c449112d4d0e
btrfs: defrag: introduce helper to defrag a range

A new helper, defrag_one_range(), is introduced to defrag one range.

This function will mostly prepare the needed pages and extent status for
defrag_one_locked_target().

As we can only have a consistent view of extent map with page and extent
bits locked, we need to re-check the range passed in to get a real
target list for defrag_one_locked_target().

Since defrag_collect_targets() will call defrag_lookup_extent() and lock
extent range, we also need to teach those two functions to skip extent
lock.  Thus new parameter, @locked, is introduced to skip extent lock if
the caller has already locked the range.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ioctl.c