mirror of
https://github.com/torvalds/linux.git
synced 2026-07-30 19:21:28 +02:00
btrfs: make btrfs_cleanup_ordered_extents() support large folios
When hitting a large folio, btrfs_cleanup_ordered_extents() will get the same large folio multiple times, and clearing the same range again and again. Thankfully this is not causing anything wrong, just inefficiency. This is caused by the fact that we're iterating folios using the old page index, thus can hit the same large folio again and again. Enhance it by increasing @index to the index of the folio end, and only increase @index by 1 if we failed to grab a folio. Reviewed-by: Boris Burkov <boris@bur.io> Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
ad580dfa38
commit
15fc0bec88
|
|
@ -401,10 +401,12 @@ static inline void btrfs_cleanup_ordered_extents(struct btrfs_inode *inode,
|
|||
|
||||
while (index <= end_index) {
|
||||
folio = filemap_get_folio(inode->vfs_inode.i_mapping, index);
|
||||
index++;
|
||||
if (IS_ERR(folio))
|
||||
if (IS_ERR(folio)) {
|
||||
index++;
|
||||
continue;
|
||||
}
|
||||
|
||||
index = folio_end(folio) >> PAGE_SHIFT;
|
||||
/*
|
||||
* Here we just clear all Ordered bits for every page in the
|
||||
* range, then btrfs_mark_ordered_io_finished() will handle
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user