diff options
Diffstat (limited to 'fs/btrfs/inode.c')
| -rw-r--r-- | fs/btrfs/inode.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index ce02199ec4e5..2c54f04a0bf5 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
| @@ -3943,7 +3943,7 @@ again: | |||
| 3943 | if (atomic_read(&inode->i_count) > 1) | 3943 | if (atomic_read(&inode->i_count) > 1) |
| 3944 | d_prune_aliases(inode); | 3944 | d_prune_aliases(inode); |
| 3945 | /* | 3945 | /* |
| 3946 | * btrfs_drop_inode will remove it from | 3946 | * btrfs_drop_inode will have it removed from |
| 3947 | * the inode cache when its usage count | 3947 | * the inode cache when its usage count |
| 3948 | * hits zero. | 3948 | * hits zero. |
| 3949 | */ | 3949 | */ |
| @@ -6337,13 +6337,14 @@ free: | |||
| 6337 | kmem_cache_free(btrfs_inode_cachep, BTRFS_I(inode)); | 6337 | kmem_cache_free(btrfs_inode_cachep, BTRFS_I(inode)); |
| 6338 | } | 6338 | } |
| 6339 | 6339 | ||
| 6340 | void btrfs_drop_inode(struct inode *inode) | 6340 | int btrfs_drop_inode(struct inode *inode) |
| 6341 | { | 6341 | { |
| 6342 | struct btrfs_root *root = BTRFS_I(inode)->root; | 6342 | struct btrfs_root *root = BTRFS_I(inode)->root; |
| 6343 | if (inode->i_nlink > 0 && btrfs_root_refs(&root->root_item) == 0) | 6343 | |
| 6344 | generic_delete_inode(inode); | 6344 | if (btrfs_root_refs(&root->root_item) == 0) |
| 6345 | return 1; | ||
| 6345 | else | 6346 | else |
| 6346 | generic_drop_inode(inode); | 6347 | return generic_drop_inode(inode); |
| 6347 | } | 6348 | } |
| 6348 | 6349 | ||
| 6349 | static void init_once(void *foo) | 6350 | static void init_once(void *foo) |
