Przeglądaj źródła

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>
Josef Bacik 11 lat temu
rodzic
commit
472b909ff6
1 zmienionych plików z 2 dodań i 1 usunięć
  1. 2 1
      fs/btrfs/disk-io.c

+ 2 - 1
fs/btrfs/disk-io.c

@@ -369,7 +369,8 @@ static int verify_parent_transid(struct extent_io_tree *io_tree,
 out:
 out:
 	unlock_extent_cached(io_tree, eb->start, eb->start + eb->len - 1,
 	unlock_extent_cached(io_tree, eb->start, eb->start + eb->len - 1,
 			     &cached_state, GFP_NOFS);
 			     &cached_state, GFP_NOFS);
-	btrfs_tree_read_unlock_blocking(eb);
+	if (need_lock)
+		btrfs_tree_read_unlock_blocking(eb);
 	return ret;
 	return ret;
 }
 }