Btrfs: iput inode on allocation failure
authorJosef Bacik <jbacik@fusionio.com>
Tue, 17 Sep 2013 15:25:44 +0000 (11:25 -0400)
committerChris Mason <chris.mason@fusionio.com>
Sat, 21 Sep 2013 15:05:28 +0000 (11:05 -0400)
We don't do the iput when we fail to allocate our delayed delalloc work in
__start_delalloc_inodes, fix this.

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

index abed81d936873a31c2cb2ebe2ff13ecd5e66fe08..931036c6eb90781f8db1b52393f863387e141efd 100644 (file)
@@ -8216,6 +8216,10 @@ static int __start_delalloc_inodes(struct btrfs_root *root, int delay_iput)
 
                work = btrfs_alloc_delalloc_work(inode, 0, delay_iput);
                if (unlikely(!work)) {
+                       if (delay_iput)
+                               btrfs_add_delayed_iput(inode);
+                       else
+                               iput(inode);
                        ret = -ENOMEM;
                        goto out;
                }