Commit cd8d0490 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Darrick J. Wong
Browse files

xfs: add a xfs_qm_unmount_rt helper



RT group enabled file systems fix the bug where we pointlessly attach
quotas to the RT bitmap and summary files.  Split the code to detach the
quotas into a helper, make it conditional and document the differing
behavior for RT group and pre-RT group file systems.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
parent 9c3cfb9c
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@
#include "xfs_health.h"
#include "xfs_da_format.h"
#include "xfs_metafile.h"
#include "xfs_rtgroup.h"

/*
 * The global quota manager. There is only one of these for the entire
@@ -210,6 +211,16 @@ xfs_qm_unmount(
	}
}

static void
xfs_qm_unmount_rt(
	struct xfs_mount	*mp)
{
	if (mp->m_rbmip)
		xfs_qm_dqdetach(mp->m_rbmip);
	if (mp->m_rsumip)
		xfs_qm_dqdetach(mp->m_rsumip);
}

/*
 * Called from the vfsops layer.
 */
@@ -223,10 +234,13 @@ xfs_qm_unmount_quotas(
	 */
	ASSERT(mp->m_rootip);
	xfs_qm_dqdetach(mp->m_rootip);
	if (mp->m_rbmip)
		xfs_qm_dqdetach(mp->m_rbmip);
	if (mp->m_rsumip)
		xfs_qm_dqdetach(mp->m_rsumip);

	/*
	 * For pre-RTG file systems, the RT inodes have quotas attached,
	 * detach them now.
	 */
	if (!xfs_has_rtgroups(mp))
		xfs_qm_unmount_rt(mp);

	/*
	 * Release the quota inodes.