diff options
author | Chris Mason <clm@fb.com> | 2016-06-17 10:04:57 -0700 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2016-06-17 10:04:57 -0700 |
commit | de18c165509edb36bde42ca6ff930854f85e21ea (patch) | |
tree | 0e2bedc70d8b60958fb49fcb3392e95efacf39eb /fs/btrfs/inode.c | |
parent | 719da39a61173c849f70656ed1a302e4b6deaa5b (diff) | |
parent | dd5c93111dc9d26e038ac437f7a403d617e82c62 (diff) |
Merge branch 'for-chris' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux into for-linus-4.7
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r-- | fs/btrfs/inode.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index e5558d9e396e..bb62418b8023 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -3271,7 +3271,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 */ |