|
@@ -4238,8 +4238,9 @@ int try_release_extent_mapping(struct page *page, gfp_t mask)
|
|
|
struct extent_map *em;
|
|
|
u64 start = page_offset(page);
|
|
|
u64 end = start + PAGE_SIZE - 1;
|
|
|
- struct extent_io_tree *tree = &BTRFS_I(page->mapping->host)->io_tree;
|
|
|
- struct extent_map_tree *map = &BTRFS_I(page->mapping->host)->extent_tree;
|
|
|
+ struct btrfs_inode *btrfs_inode = BTRFS_I(page->mapping->host);
|
|
|
+ struct extent_io_tree *tree = &btrfs_inode->io_tree;
|
|
|
+ struct extent_map_tree *map = &btrfs_inode->extent_tree;
|
|
|
|
|
|
if (gfpflags_allow_blocking(mask) &&
|
|
|
page->mapping->host->i_size > SZ_16M) {
|
|
@@ -4262,6 +4263,8 @@ int try_release_extent_mapping(struct page *page, gfp_t mask)
|
|
|
extent_map_end(em) - 1,
|
|
|
EXTENT_LOCKED | EXTENT_WRITEBACK,
|
|
|
0, NULL)) {
|
|
|
+ set_bit(BTRFS_INODE_NEEDS_FULL_SYNC,
|
|
|
+ &btrfs_inode->runtime_flags);
|
|
|
remove_extent_mapping(map, em);
|
|
|
/* once for the rb tree */
|
|
|
free_extent_map(em);
|