Btrfs: do not bug_on if we try to cow a free space cache inode
authorJosef Bacik <jbacik@fusionio.com>
Fri, 25 Oct 2013 20:19:08 +0000 (16:19 -0400)
committerChris Mason <chris.mason@fusionio.com>
Tue, 12 Nov 2013 03:07:49 +0000 (22:07 -0500)
We can just return an error and we'll bail out properly.  We still want to catch
this case to make sure we don't have a bug somewhere, so just warn if this pops
up.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
fs/btrfs/inode.c

index f1fbf903bf9b491ef4e489946d6f7b5c7d8fe03e..a44ca6a4feffc1af73ef74813b38c849934a5fbf 100644 (file)
@@ -843,7 +843,10 @@ static noinline int cow_file_range(struct inode *inode,
        struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree;
        int ret = 0;
 
-       BUG_ON(btrfs_is_free_space_inode(inode));
+       if (btrfs_is_free_space_inode(inode)) {
+               WARN_ON_ONCE(1);
+               return -EINVAL;
+       }
 
        num_bytes = ALIGN(end - start + 1, blocksize);
        num_bytes = max(blocksize,  num_bytes);