diff options
author | Dave Chinner <david@fromorbit.com> | 2010-01-11 06:47:40 -0500 |
---|---|---|
committer | Alex Elder <aelder@sgi.com> | 2010-01-15 16:33:02 -0500 |
commit | 5017e97d52628fb8ae56e434e86ac2e72ddaac2b (patch) | |
tree | bbad07b8fc75e9d309d0a4c450a886eaf7e687fd /fs/xfs/linux-2.6/xfs_sync.c | |
parent | c9c129714e71c890bed1bd5b61697a896c3c2d54 (diff) |
xfs: rename xfs_get_perag
xfs_get_perag is really getting the perag that an inode belongs to
based on it's inode number. Convert the use of this function to just
get the perag from a provided ag number. Use this new function to
obtain the per-ag structure when traversing the per AG inode trees
for sync and reclaim.
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/linux-2.6/xfs_sync.c')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_sync.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index 0f90bfe2815f..cc964faf12e9 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c | |||
@@ -90,14 +90,13 @@ xfs_inode_ag_lookup( | |||
90 | STATIC int | 90 | STATIC int |
91 | xfs_inode_ag_walk( | 91 | xfs_inode_ag_walk( |
92 | struct xfs_mount *mp, | 92 | struct xfs_mount *mp, |
93 | xfs_agnumber_t ag, | 93 | struct xfs_perag *pag, |
94 | int (*execute)(struct xfs_inode *ip, | 94 | int (*execute)(struct xfs_inode *ip, |
95 | struct xfs_perag *pag, int flags), | 95 | struct xfs_perag *pag, int flags), |
96 | int flags, | 96 | int flags, |
97 | int tag, | 97 | int tag, |
98 | int exclusive) | 98 | int exclusive) |
99 | { | 99 | { |
100 | struct xfs_perag *pag = &mp->m_perag[ag]; | ||
101 | uint32_t first_index; | 100 | uint32_t first_index; |
102 | int last_error = 0; | 101 | int last_error = 0; |
103 | int skipped; | 102 | int skipped; |
@@ -141,8 +140,6 @@ restart: | |||
141 | delay(1); | 140 | delay(1); |
142 | goto restart; | 141 | goto restart; |
143 | } | 142 | } |
144 | |||
145 | xfs_put_perag(mp, pag); | ||
146 | return last_error; | 143 | return last_error; |
147 | } | 144 | } |
148 | 145 | ||
@@ -160,10 +157,16 @@ xfs_inode_ag_iterator( | |||
160 | xfs_agnumber_t ag; | 157 | xfs_agnumber_t ag; |
161 | 158 | ||
162 | for (ag = 0; ag < mp->m_sb.sb_agcount; ag++) { | 159 | for (ag = 0; ag < mp->m_sb.sb_agcount; ag++) { |
163 | if (!mp->m_perag[ag].pag_ici_init) | 160 | struct xfs_perag *pag; |
161 | |||
162 | pag = xfs_perag_get(mp, ag); | ||
163 | if (!pag->pag_ici_init) { | ||
164 | xfs_perag_put(pag); | ||
164 | continue; | 165 | continue; |
165 | error = xfs_inode_ag_walk(mp, ag, execute, flags, tag, | 166 | } |
167 | error = xfs_inode_ag_walk(mp, pag, execute, flags, tag, | ||
166 | exclusive); | 168 | exclusive); |
169 | xfs_perag_put(pag); | ||
167 | if (error) { | 170 | if (error) { |
168 | last_error = error; | 171 | last_error = error; |
169 | if (error == EFSCORRUPTED) | 172 | if (error == EFSCORRUPTED) |
@@ -690,16 +693,17 @@ void | |||
690 | xfs_inode_set_reclaim_tag( | 693 | xfs_inode_set_reclaim_tag( |
691 | xfs_inode_t *ip) | 694 | xfs_inode_t *ip) |
692 | { | 695 | { |
693 | xfs_mount_t *mp = ip->i_mount; | 696 | struct xfs_mount *mp = ip->i_mount; |
694 | xfs_perag_t *pag = xfs_get_perag(mp, ip->i_ino); | 697 | struct xfs_perag *pag; |
695 | 698 | ||
699 | pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); | ||
696 | read_lock(&pag->pag_ici_lock); | 700 | read_lock(&pag->pag_ici_lock); |
697 | spin_lock(&ip->i_flags_lock); | 701 | spin_lock(&ip->i_flags_lock); |
698 | __xfs_inode_set_reclaim_tag(pag, ip); | 702 | __xfs_inode_set_reclaim_tag(pag, ip); |
699 | __xfs_iflags_set(ip, XFS_IRECLAIMABLE); | 703 | __xfs_iflags_set(ip, XFS_IRECLAIMABLE); |
700 | spin_unlock(&ip->i_flags_lock); | 704 | spin_unlock(&ip->i_flags_lock); |
701 | read_unlock(&pag->pag_ici_lock); | 705 | read_unlock(&pag->pag_ici_lock); |
702 | xfs_put_perag(mp, pag); | 706 | xfs_perag_put(pag); |
703 | } | 707 | } |
704 | 708 | ||
705 | void | 709 | void |