From: Jan Schmidt Date: Wed, 4 May 2011 14:18:50 +0000 (+0200) Subject: Btrfs: fix extent state leak on failed nodatasum reads X-Git-Tag: v3.0-rc3~9^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=08d2f347e877e489ca098c87a6fd2e872fef9767;p=profile%2Fivi%2Fkernel-x86-ivi.git Btrfs: fix extent state leak on failed nodatasum reads When encountering an EIO while reading from a nodatasum extent, we insert an error record into the inode's failure tree. btrfs_readpage_end_io_hook returns early for nodatasum inodes. We'd better clear the failure tree in that case, otherwise the kernel complains about BUG extent_state: Objects remaining on kmem_cache_close() on rmmod. Signed-off-by: Jan Schmidt Signed-off-by: Chris Mason --- diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 02ff4a1..113913a 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -1986,7 +1986,7 @@ static int btrfs_readpage_end_io_hook(struct page *page, u64 start, u64 end, } if (BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM) - return 0; + goto good; if (root->root_key.objectid == BTRFS_DATA_RELOC_TREE_OBJECTID && test_range_bit(io_tree, start, end, EXTENT_NODATASUM, 1, NULL)) {