diff options
author | Dave Chinner <david@fromorbit.com> | 2010-01-11 06:47:43 -0500 |
---|---|---|
committer | Alex Elder <aelder@sgi.com> | 2010-01-15 16:33:39 -0500 |
commit | 44b56e0a1aed522a10051645e85d300e10926fd3 (patch) | |
tree | c46879f4feaec1b19456395d74a2e9c27dde530d /fs/xfs/xfs_inode.c | |
parent | 4196ac08c023c6dab90c3fa460d9c06deaa304c4 (diff) |
xfs: convert remaining direct references to m_perag
Convert the remaining direct lookups of the per ag structures to use
get/put accesses. Ensure that the loops across AGs and prior users
of the interface balance gets and puts correctly.
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_inode.c')
-rw-r--r-- | fs/xfs/xfs_inode.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index bd3d81636d51..0317b000ab44 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c | |||
@@ -2695,7 +2695,7 @@ xfs_iflush_cluster( | |||
2695 | ilist_size = inodes_per_cluster * sizeof(xfs_inode_t *); | 2695 | ilist_size = inodes_per_cluster * sizeof(xfs_inode_t *); |
2696 | ilist = kmem_alloc(ilist_size, KM_MAYFAIL|KM_NOFS); | 2696 | ilist = kmem_alloc(ilist_size, KM_MAYFAIL|KM_NOFS); |
2697 | if (!ilist) | 2697 | if (!ilist) |
2698 | return 0; | 2698 | goto out_put; |
2699 | 2699 | ||
2700 | mask = ~(((XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_inodelog)) - 1); | 2700 | mask = ~(((XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_inodelog)) - 1); |
2701 | first_index = XFS_INO_TO_AGINO(mp, ip->i_ino) & mask; | 2701 | first_index = XFS_INO_TO_AGINO(mp, ip->i_ino) & mask; |
@@ -2764,6 +2764,8 @@ xfs_iflush_cluster( | |||
2764 | out_free: | 2764 | out_free: |
2765 | read_unlock(&pag->pag_ici_lock); | 2765 | read_unlock(&pag->pag_ici_lock); |
2766 | kmem_free(ilist); | 2766 | kmem_free(ilist); |
2767 | out_put: | ||
2768 | xfs_perag_put(pag); | ||
2767 | return 0; | 2769 | return 0; |
2768 | 2770 | ||
2769 | 2771 | ||
@@ -2807,6 +2809,7 @@ cluster_corrupt_out: | |||
2807 | */ | 2809 | */ |
2808 | xfs_iflush_abort(iq); | 2810 | xfs_iflush_abort(iq); |
2809 | kmem_free(ilist); | 2811 | kmem_free(ilist); |
2812 | xfs_perag_put(pag); | ||
2810 | return XFS_ERROR(EFSCORRUPTED); | 2813 | return XFS_ERROR(EFSCORRUPTED); |
2811 | } | 2814 | } |
2812 | 2815 | ||