]> git.hungrycats.org Git - linux/commitdiff
Btrfs: don't BUG_ON() in btrfs_orphan_add
authorJosef Bacik <jbacik@fb.com>
Fri, 27 May 2016 17:03:04 +0000 (13:03 -0400)
committerZygo Blaxell <zblaxell@thirteen.furryterror.org>
Sat, 18 Jun 2016 13:36:20 +0000 (09:36 -0400)
This is just a screwup for developers, so change it to an ASSERT() so developers
notice when things go wrong and deal with the error appropriately if ASSERT()
isn't enabled.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fb.com>
Reviewed-by: Mark Fasheh <mfasheh@suse.de>
Signed-off-by: David Sterba <dsterba@suse.com>
(cherry picked from commit 3b6571c180da85e43550c608e954ab7b2a31d954)

fs/btrfs/inode.c

index 55a4cb192ade53fcb7dab3952b58703b9881dbb4..c5273e282d3634a5a01cfc22c74ad4fb3c64f0a9 100644 (file)
@@ -3255,7 +3255,16 @@ int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode)
        /* grab metadata reservation from transaction handle */
        if (reserve) {
                ret = btrfs_orphan_reserve_metadata(trans, inode);
-               BUG_ON(ret); /* -ENOSPC in reservation; Logic error? JDM */
+               ASSERT(!ret);
+               if (ret) {
+                       atomic_dec(&root->orphan_inodes);
+                       clear_bit(BTRFS_INODE_ORPHAN_META_RESERVED,
+                                 &BTRFS_I(inode)->runtime_flags);
+                       if (insert)
+                               clear_bit(BTRFS_INODE_HAS_ORPHAN_ITEM,
+                                         &BTRFS_I(inode)->runtime_flags);
+                       return ret;
+               }
        }
 
        /* insert an orphan item to track this unlinked/truncated file */