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

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

[XFS] refactor xfs_mount_free



xfs_mount_free mostly frees the perag data, which is something that is
duplicated in the mount error path.

Move the XFS_QM_DONE call to the caller and remove the useless
mutex_destroy/spinlock_destroy calls so that we can re-use it for the
mount error path. Also rename it to xfs_free_perag to reflect what it
does.

SGI-PV: 981498

SGI-Modid: xfs-linux-melb:xfs-kern:31836a

Signed-off-by: default avatarChristoph Hellwig <hch@infradead.org>
Signed-off-by: default avatarLachlan McIlroy <lachlan@sgi.com>
parent 6203300e
Loading
Loading
Loading
Loading
+5 −16
Original line number Diff line number Diff line
@@ -128,7 +128,7 @@ static const struct {
 * initialized.
 */
STATIC void
xfs_mount_free(
xfs_free_perag(
	xfs_mount_t	*mp)
{
	if (mp->m_perag) {
@@ -139,13 +139,6 @@ xfs_mount_free(
				kmem_free(mp->m_perag[agno].pagb_list);
		kmem_free(mp->m_perag);
	}

	spinlock_destroy(&mp->m_ail_lock);
	spinlock_destroy(&mp->m_sb_lock);
	mutex_destroy(&mp->m_ilock);
	mutex_destroy(&mp->m_growlock);
	if (mp->m_quotainfo)
		XFS_QM_DONE(mp);
}

/*
@@ -922,7 +915,6 @@ xfs_mountfs(
	__uint64_t	resblks;
	__int64_t	update_flags = 0LL;
	uint		quotamount, quotaflags;
	int		agno;
	int		uuid_mounted = 0;
	int		error = 0;

@@ -1216,12 +1208,7 @@ xfs_mountfs(
 error3:
	xfs_log_unmount_dealloc(mp);
 error2:
	for (agno = 0; agno < sbp->sb_agcount; agno++)
		if (mp->m_perag[agno].pagb_list)
			kmem_free(mp->m_perag[agno].pagb_list);
	kmem_free(mp->m_perag);
	mp->m_perag = NULL;
	/* FALLTHROUGH */
	xfs_free_perag(mp);
 error1:
	if (uuid_mounted)
		uuid_table_remove(&mp->m_sb.sb_uuid);
@@ -1307,7 +1294,9 @@ xfs_unmountfs(
#if defined(DEBUG)
	xfs_errortag_clearall(mp, 0);
#endif
	xfs_mount_free(mp);
	xfs_free_perag(mp);
	if (mp->m_quotainfo)
		XFS_QM_DONE(mp);
}

STATIC void