Btrfs: release path before starting transaction in can_nocow_extent
authorJosef Bacik <jbacik@fusionio.com>
Fri, 18 Oct 2013 16:10:36 +0000 (12:10 -0400)
committerChris Mason <chris.mason@fusionio.com>
Fri, 18 Oct 2013 16:43:40 +0000 (12:43 -0400)
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>
fs/btrfs/inode.c

index 3b4ffaf0cd5204660bd07b864e6ec8341871bdc2..f4a6851e6c8889a1a3d80017e3dbf8c937d40804 100644 (file)
@@ -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