summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorJosef Bacik <jbacik@fusionio.com>2013-10-18 12:10:36 -0400
committerChris Mason <chris.mason@fusionio.com>2013-10-18 12:43:40 -0400
commit1bda19eb73d68b304148e67253e47cef049a419d (patch)
tree19f7e0ed19c2146b125bff6f5f74c1cc9a386668 /fs
parentc00869f1ae6a8fa49802d5e60d843b7051a112ec (diff)
downloadlinux-stable-1bda19eb73d68b304148e67253e47cef049a419d.tar.gz
linux-stable-1bda19eb73d68b304148e67253e47cef049a419d.tar.bz2
linux-stable-1bda19eb73d68b304148e67253e47cef049a419d.zip
Btrfs: release path before starting transaction in can_nocow_extent
We can't be holding tree locks while we try to start a transaction, we will deadlock. Thanks, Reported-by: Sage Weil <sage@inktank.com> Signed-off-by: Josef Bacik <jbacik@fusionio.com> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/inode.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 3b4ffaf0cd52..f4a6851e6c88 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -6437,6 +6437,7 @@ noinline int can_nocow_extent(struct inode *inode, u64 offset, u64 *len,
if (btrfs_extent_readonly(root, disk_bytenr))
goto out;
+ btrfs_release_path(path);
/*
* look for other files referencing this extent, if we