aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_mount.c
diff options
context:
space:
mode:
authorDave Chinner <david@fromorbit.com>2010-01-11 06:47:45 -0500
committerAlex Elder <aelder@sgi.com>2010-01-15 16:34:04 -0500
commitaed3bb90abaf0b42e8c8747e192f7bb97f445279 (patch)
tree4619214ed42821792b05f4417cb95bde90abb562 /fs/xfs/xfs_mount.c
parent1c1c6ebcf5284aee4910f3b906ac90c20e510c82 (diff)
xfs: Reference count per-ag structures
Reference count the per-ag structures to ensure that we keep get/put pairs balanced. Assert that the reference counts are zero at unmount time to catch leaks. In future, reference counts will enable us to safely remove perag structures by allowing us to detect when they are no longer in use. Signed-off-by: Dave Chinner <david@fromorbit.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Alex Elder <aelder@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_mount.c')
-rw-r--r--fs/xfs/xfs_mount.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
index c04dd83cb57c..f241fec26070 100644
--- a/fs/xfs/xfs_mount.c
+++ b/fs/xfs/xfs_mount.c
@@ -215,6 +215,7 @@ xfs_free_perag(
215 for (agno = 0; agno < mp->m_sb.sb_agcount; agno++) { 215 for (agno = 0; agno < mp->m_sb.sb_agcount; agno++) {
216 spin_lock(&mp->m_perag_lock); 216 spin_lock(&mp->m_perag_lock);
217 pag = radix_tree_delete(&mp->m_perag_tree, agno); 217 pag = radix_tree_delete(&mp->m_perag_tree, agno);
218 ASSERT(atomic_read(&pag->pag_ref) == 0);
218 spin_unlock(&mp->m_perag_lock); 219 spin_unlock(&mp->m_perag_lock);
219 ASSERT(pag); 220 ASSERT(pag);
220 kmem_free(pag->pagb_list); 221 kmem_free(pag->pagb_list);