diff options
author | Dave Chinner <david@fromorbit.com> | 2010-01-11 06:47:46 -0500 |
---|---|---|
committer | Alex Elder <aelder@sgi.com> | 2010-01-15 16:34:12 -0500 |
commit | 0fa800fbd549736dfdc1d7761f87e33dc8cd973b (patch) | |
tree | 3940f2f5bc4bb3bec888f7ef9ed8a8c875e02695 /fs/xfs/xfs_mount.h | |
parent | aed3bb90abaf0b42e8c8747e192f7bb97f445279 (diff) |
xfs: Add trace points for per-ag refcount debugging.
Uninline xfs_perag_{get,put} so that tracepoints can be inserted
into them to speed debugging of reference count problems.
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.h')
-rw-r--r-- | fs/xfs/xfs_mount.h | 25 |
1 files changed, 2 insertions, 23 deletions
diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index 16b22120b98f..e62fd1cde464 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h | |||
@@ -386,29 +386,8 @@ xfs_daddr_to_agbno(struct xfs_mount *mp, xfs_daddr_t d) | |||
386 | /* | 386 | /* |
387 | * perag get/put wrappers for ref counting | 387 | * perag get/put wrappers for ref counting |
388 | */ | 388 | */ |
389 | static inline struct xfs_perag * | 389 | struct xfs_perag *xfs_perag_get(struct xfs_mount *mp, xfs_agnumber_t agno); |
390 | xfs_perag_get(struct xfs_mount *mp, xfs_agnumber_t agno) | 390 | void xfs_perag_put(struct xfs_perag *pag); |
391 | { | ||
392 | struct xfs_perag *pag; | ||
393 | |||
394 | spin_lock(&mp->m_perag_lock); | ||
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 | } | ||
402 | spin_unlock(&mp->m_perag_lock); | ||
403 | return pag; | ||
404 | } | ||
405 | |||
406 | static inline void | ||
407 | xfs_perag_put(struct xfs_perag *pag) | ||
408 | { | ||
409 | ASSERT(atomic_read(&pag->pag_ref) > 0); | ||
410 | atomic_dec(&pag->pag_ref); | ||
411 | } | ||
412 | 391 | ||
413 | /* | 392 | /* |
414 | * Per-cpu superblock locking functions | 393 | * Per-cpu superblock locking functions |