summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorJosef Bacik <jbacik@fb.com>2014-06-25 13:45:41 -0700
committerChris Mason <clm@fb.com>2014-06-28 13:48:47 -0700
commit472b909ff6f4884d235ef7b9d3847fad5efafbff (patch)
treeeee3ce7df92823bedb0f0d922221e380304d7e2d /fs
parent46c4e71e9b02a649c722f06569f5b6575da02dba (diff)
downloadlinux-stable-472b909ff6f4884d235ef7b9d3847fad5efafbff.tar.gz
linux-stable-472b909ff6f4884d235ef7b9d3847fad5efafbff.tar.bz2
linux-stable-472b909ff6f4884d235ef7b9d3847fad5efafbff.zip
btrfs: only unlock block in verify_parent_transid if we locked it
This is a regression from my patch a26e8c9f75b0bfd8cccc9e8f110737b136eb5994, we need to only unlock the block if we were the one who locked it. Otherwise this will trip BUG_ON()'s in locking.c Thanks, cc: stable@vger.kernel.org Signed-off-by: Josef Bacik <jbacik@fb.com> Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs')
-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 8bb4aa19898f..f00165de6fbf 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -369,7 +369,8 @@ static int verify_parent_transid(struct extent_io_tree *io_tree,
out:
unlock_extent_cached(io_tree, eb->start, eb->start + eb->len - 1,
&cached_state, GFP_NOFS);
- btrfs_tree_read_unlock_blocking(eb);
+ if (need_lock)
+ btrfs_tree_read_unlock_blocking(eb);
return ret;
}