aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_mount.h
diff options
context:
space:
mode:
Diffstat (limited to 'fs/xfs/xfs_mount.h')
-rw-r--r--fs/xfs/xfs_mount.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h
index cfa7a5d22e72..16b22120b98f 100644
--- a/fs/xfs/xfs_mount.h
+++ b/fs/xfs/xfs_mount.h
@@ -384,7 +384,7 @@ xfs_daddr_to_agbno(struct xfs_mount *mp, xfs_daddr_t d)
384} 384}
385 385
386/* 386/*
387 * perag get/put wrappers for eventual ref counting 387 * perag get/put wrappers for ref counting
388 */ 388 */
389static inline struct xfs_perag * 389static inline struct xfs_perag *
390xfs_perag_get(struct xfs_mount *mp, xfs_agnumber_t agno) 390xfs_perag_get(struct xfs_mount *mp, xfs_agnumber_t agno)
@@ -393,6 +393,12 @@ xfs_perag_get(struct xfs_mount *mp, xfs_agnumber_t agno)
393 393
394 spin_lock(&mp->m_perag_lock); 394 spin_lock(&mp->m_perag_lock);
395 pag = radix_tree_lookup(&mp->m_perag_tree, agno); 395 pag = radix_tree_lookup(&mp->m_perag_tree, agno);
396 if (pag) {
397 ASSERT(atomic_read(&pag->pag_ref) >= 0);
398 /* catch leaks in the positive direction during testing */
399 ASSERT(atomic_read(&pag->pag_ref) < 1000);
400 atomic_inc(&pag->pag_ref);
401 }
396 spin_unlock(&mp->m_perag_lock); 402 spin_unlock(&mp->m_perag_lock);
397 return pag; 403 return pag;
398} 404}
@@ -400,7 +406,8 @@ xfs_perag_get(struct xfs_mount *mp, xfs_agnumber_t agno)
400static inline void 406static inline void
401xfs_perag_put(struct xfs_perag *pag) 407xfs_perag_put(struct xfs_perag *pag)
402{ 408{
403 /* nothing to see here, move along */ 409 ASSERT(atomic_read(&pag->pag_ref) > 0);
410 atomic_dec(&pag->pag_ref);
404} 411}
405 412
406/* 413/*