Btrfs: unlock extent and pages on error in cow_file_range
authorJosef Bacik <jbacik@fb.com>
Fri, 7 Feb 2014 17:21:23 +0000 (12:21 -0500)
committerJosef Bacik <jbacik@fb.com>
Mon, 10 Mar 2014 19:15:53 +0000 (15:15 -0400)
When I converted the BUG_ON() for the free_space_cache_inode in cow_file_range I
made it so we just return an error instead of unlocking all of our various
stuff.  This is a mistake and causes us to hang when we run into this.  This
patch fixes this problem.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fb.com>
fs/btrfs/inode.c

index a7e6690e0946145479043d04f0751b2ff6061581..5b892500309087b78875918608fa3289578a5a04 100644 (file)
@@ -864,7 +864,8 @@ static noinline int cow_file_range(struct inode *inode,
 
        if (btrfs_is_free_space_inode(inode)) {
                WARN_ON_ONCE(1);
-               return -EINVAL;
+               ret = -EINVAL;
+               goto out_unlock;
        }
 
        num_bytes = ALIGN(end - start + 1, blocksize);