summaryrefslogtreecommitdiff
path: root/fs/btrfs/disk-io.c
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2008-04-09 16:28:12 -0400
committerChris Mason <chris.mason@oracle.com>2008-09-25 11:04:01 -0400
commit728131d8e40c2a47c59ca91a806299c4708029f9 (patch)
tree4b6023689d6f77fdf785d815a2ca986e73aeff1a /fs/btrfs/disk-io.c
parentcea9e4452ebaf18dd0951e90dc84d82a5dee40b2 (diff)
downloadlwn-728131d8e40c2a47c59ca91a806299c4708029f9.tar.gz
lwn-728131d8e40c2a47c59ca91a806299c4708029f9.zip
Btrfs: Add additional debugging for metadata checksum failures
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/disk-io.c')
-rw-r--r--fs/btrfs/disk-io.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index bc5bd5abb28a..e444b99e02da 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -283,6 +283,7 @@ static int btree_releasepage(struct page *page, gfp_t gfp_flags)
map = &BTRFS_I(page->mapping->host)->extent_tree;
ret = try_release_extent_mapping(map, tree, page, gfp_flags);
if (ret == 1) {
+ invalidate_extent_lru(tree, page_offset(page), PAGE_CACHE_SIZE);
ClearPagePrivate(page);
set_page_private(page, 0);
page_cache_release(page);
@@ -376,7 +377,6 @@ int btrfs_verify_block_csum(struct btrfs_root *root,
buf->flags |= EXTENT_CSUM;
return 0;
}
-
lock_extent(io_tree, buf->start, end, GFP_NOFS);
if (test_range_bit(io_tree, buf->start, end, EXTENT_CSUM, 1)) {
@@ -384,6 +384,7 @@ int btrfs_verify_block_csum(struct btrfs_root *root,
ret = 0;
goto out_unlock;
}
+WARN_ON(buf->flags & EXTENT_CSUM);
ret = csum_tree_block(root, buf, 1);
set_extent_bits(io_tree, buf->start, end, EXTENT_CSUM, GFP_NOFS);