Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f3dcc13f authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Lachlan McIlroy
Browse files

[XFS] cleanup root inode handling in xfs_fs_fill_super



- rename rootvp to root for clarify
- remove useless vn_to_inode call
- check is_bad_inode before calling d_alloc_root
- use iput instead of VN_RELE in the error case

SGI-PV: 976035
SGI-Modid: xfs-linux-melb:xfs-kern:30708a

Signed-off-by: default avatarChristoph Hellwig <hch@infradead.org>
Signed-off-by: default avatarLachlan McIlroy <lachlan@sgi.com>
parent 59a33f9f
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -1307,7 +1307,7 @@ xfs_fs_fill_super(
	void			*data,
	int			silent)
{
	struct inode		*rootvp;
	struct inode		*root;
	struct xfs_mount	*mp = NULL;
	struct xfs_mount_args	*args = xfs_args_allocate(sb, silent);
	int			error;
@@ -1345,19 +1345,18 @@ xfs_fs_fill_super(
	sb->s_time_gran = 1;
	set_posix_acl_flag(sb);

	rootvp = igrab(mp->m_rootip->i_vnode);
	if (!rootvp) {
	root = igrab(mp->m_rootip->i_vnode);
	if (!root) {
		error = ENOENT;
		goto fail_unmount;
	}

	sb->s_root = d_alloc_root(vn_to_inode(rootvp));
	if (!sb->s_root) {
		error = ENOMEM;
	if (is_bad_inode(root)) {
		error = EINVAL;
		goto fail_vnrele;
	}
	if (is_bad_inode(sb->s_root->d_inode)) {
		error = EINVAL;
	sb->s_root = d_alloc_root(root);
	if (!sb->s_root) {
		error = ENOMEM;
		goto fail_vnrele;
	}

@@ -1379,7 +1378,7 @@ xfs_fs_fill_super(
		dput(sb->s_root);
		sb->s_root = NULL;
	} else {
		VN_RELE(rootvp);
		iput(root);
	}

fail_unmount: