aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2008-11-10 11:50:50 -0500
committerChris Mason <chris.mason@oracle.com>2008-11-10 11:50:50 -0500
commit39be25cd89450940b0e5f8a6aad71d1ec99b17bf (patch)
treeecd9732a647df1af7439e1f859ac3b00e68cb430 /fs
parentf5a31e166772a7b9fff6725b697eb8b57633671e (diff)
Btrfs: Use invalidatepage when writepage finds a page outside of i_size
With all the recent fixes to the delalloc locking, it is now safe again to use invalidatepage inside the writepage code for pages outside of i_size. This used to deadlock against some of the code to write locked ranges of pages, but all of that has been fixed. Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/extent_io.c6
-rw-r--r--fs/btrfs/file-item.c1
2 files changed, 2 insertions, 5 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 69ea09659d47..af2d9a9300a7 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -2174,11 +2174,7 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc,
2174 pg_offset = i_size & (PAGE_CACHE_SIZE - 1); 2174 pg_offset = i_size & (PAGE_CACHE_SIZE - 1);
2175 if (page->index > end_index || 2175 if (page->index > end_index ||
2176 (page->index == end_index && !pg_offset)) { 2176 (page->index == end_index && !pg_offset)) {
2177 if (epd->extent_locked) { 2177 page->mapping->a_ops->invalidatepage(page, 0);
2178 if (tree->ops && tree->ops->writepage_end_io_hook)
2179 tree->ops->writepage_end_io_hook(page, start,
2180 page_end, NULL, 1);
2181 }
2182 unlock_page(page); 2178 unlock_page(page);
2183 return 0; 2179 return 0;
2184 } 2180 }
diff --git a/fs/btrfs/file-item.c b/fs/btrfs/file-item.c
index f4d3fa71bc41..f76378831407 100644
--- a/fs/btrfs/file-item.c
+++ b/fs/btrfs/file-item.c
@@ -185,6 +185,7 @@ int btrfs_lookup_bio_sums(struct btrfs_root *root, struct inode *inode,
185 "%llu\n", inode->i_ino, 185 "%llu\n", inode->i_ino,
186 (unsigned long long)offset); 186 (unsigned long long)offset);
187 item = NULL; 187 item = NULL;
188 btrfs_release_path(root, path);
188 goto found; 189 goto found;
189 } 190 }
190 btrfs_item_key_to_cpu(path->nodes[0], &found_key, 191 btrfs_item_key_to_cpu(path->nodes[0], &found_key,