diff options
author | Josef Bacik <jbacik@fb.com> | 2014-06-25 22:45:41 +0200 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2014-06-28 22:48:47 +0200 |
commit | 472b909ff6f4884d235ef7b9d3847fad5efafbff (patch) | |
tree | eee3ce7df92823bedb0f0d922221e380304d7e2d /fs | |
parent | Btrfs: assert send doesn't attempt to start transactions (diff) | |
download | linux-472b909ff6f4884d235ef7b9d3847fad5efafbff.tar.xz linux-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.c | 3 |
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; } |