1
0
Fork 0

Btrfs: put our inode if orphan cleanup fails

When we cross into a different subvol when doing a lookup we will run the orhpan
cleanup.  If this fails however we do not drop the ref to the inode we were
looking up before we return an error, which leads to busy inodes on umount.
Thanks,

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
wifi-calibration
Josef Bacik 2013-06-03 21:39:49 -04:00
parent c69b26b011
commit 01cd33674e
1 changed files with 3 additions and 1 deletions

View File

@ -4941,8 +4941,10 @@ struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry)
if (!(inode->i_sb->s_flags & MS_RDONLY))
ret = btrfs_orphan_cleanup(sub_root);
up_read(&root->fs_info->cleanup_work_sem);
if (ret)
if (ret) {
iput(inode);
inode = ERR_PTR(ret);
}
}
return inode;