@@ -888,9 +888,7 @@ static bool btree_release_folio(struct folio *folio, gfp_t gfp_flags)
static void btree_invalidate_folio(struct folio *folio, size_t offset,
size_t length)
{
- struct extent_io_tree *tree;
- tree = &BTRFS_I(folio->mapping->host)->io_tree;
- extent_invalidate_folio(tree, folio, offset);
+ folio_wait_writeback(folio);
btree_release_folio(folio, GFP_NOFS);
if (folio_get_private(folio)) {
btrfs_warn(BTRFS_I(folio->mapping->host)->root->fs_info,
@@ -3324,38 +3324,6 @@ void extent_readahead(struct readahead_control *rac)
submit_one_bio(&bio_ctrl);
}
-/*
- * basic invalidate_folio code, this waits on any locked or writeback
- * ranges corresponding to the folio, and then deletes any extent state
- * records from the tree
- */
-int extent_invalidate_folio(struct extent_io_tree *tree,
- struct folio *folio, size_t offset)
-{
- struct extent_state *cached_state = NULL;
- u64 start = folio_pos(folio);
- u64 end = start + folio_size(folio) - 1;
- size_t blocksize = folio->mapping->host->i_sb->s_blocksize;
-
- /* This function is only called for the btree inode */
- ASSERT(tree->owner == IO_TREE_BTREE_INODE_IO);
-
- start += ALIGN(offset, blocksize);
- if (start > end)
- return 0;
-
- lock_extent(tree, start, end, &cached_state);
- folio_wait_writeback(folio);
-
- /*
- * Currently for btree io tree, only EXTENT_LOCKED is utilized,
- * so here we only need to unlock the extent range to free any
- * existing extent state.
- */
- unlock_extent(tree, start, end, &cached_state);
- return 0;
-}
-
/*
* a helper for release_folio, this tests for areas of the page that
* are locked or under IO and drops the related state bits if it is safe
@@ -239,8 +239,6 @@ void extent_range_redirty_for_io(struct inode *inode, u64 start, u64 end);
void extent_clear_unlock_delalloc(struct btrfs_inode *inode, u64 start, u64 end,
struct page *locked_page,
u32 bits_to_clear, unsigned long page_ops);
-int extent_invalidate_folio(struct extent_io_tree *tree,
- struct folio *folio, size_t offset);
int btrfs_alloc_page_array(unsigned int nr_pages, struct page **page_array);
Don't lock extents while performing invalidate_folio because this is performed by the calling function higher up the call chain. With this change, extent_invalidate_folio() calls only folio_wait_writeback(). Remove and cleanup this function. Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com> --- fs/btrfs/disk-io.c | 4 +--- fs/btrfs/extent_io.c | 32 -------------------------------- fs/btrfs/extent_io.h | 2 -- 3 files changed, 1 insertion(+), 37 deletions(-)