diff options
author | Christoph Hellwig <hch@infradead.org> | 2010-05-28 15:03:10 -0400 |
---|---|---|
committer | Alex Elder <aelder@sgi.com> | 2010-05-28 16:19:56 -0400 |
commit | fb3b504adeee942e55393396fea8fdf406acf037 (patch) | |
tree | 42486eb1c674ba2d76b719109e21a54a7df7b8fc /fs/xfs/linux-2.6 | |
parent | 9b98b6f3e1534bba2efcd5b16318945cf2218d99 (diff) |
xfs: fix access to upper inodes without inode64
If a filesystem is mounted without the inode64 mount option we
should still be able to access inodes not fitting into 32 bits, just
not created new ones. For this to work we need to make sure the
inode cache radix tree is initialized for all allocation groups, not
just those we plan to allocate inodes from. This patch makes sure
we initialize the inode cache radix tree for all allocation groups,
and also cleans xfs_initialize_perag up a bit to separate the
inode32 logical from the general perag structure setup.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Alex Elder <aelder@sgi.com>
Diffstat (limited to 'fs/xfs/linux-2.6')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_sync.c | 9 |
1 files changed, 0 insertions, 9 deletions
diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index 3884e20bc14e..ef7f0218bccb 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c | |||
@@ -164,10 +164,6 @@ xfs_inode_ag_iterator( | |||
164 | struct xfs_perag *pag; | 164 | struct xfs_perag *pag; |
165 | 165 | ||
166 | pag = xfs_perag_get(mp, ag); | 166 | pag = xfs_perag_get(mp, ag); |
167 | if (!pag->pag_ici_init) { | ||
168 | xfs_perag_put(pag); | ||
169 | continue; | ||
170 | } | ||
171 | error = xfs_inode_ag_walk(mp, pag, execute, flags, tag, | 167 | error = xfs_inode_ag_walk(mp, pag, execute, flags, tag, |
172 | exclusive, &nr); | 168 | exclusive, &nr); |
173 | xfs_perag_put(pag); | 169 | xfs_perag_put(pag); |
@@ -867,12 +863,7 @@ xfs_reclaim_inode_shrink( | |||
867 | down_read(&xfs_mount_list_lock); | 863 | down_read(&xfs_mount_list_lock); |
868 | list_for_each_entry(mp, &xfs_mount_list, m_mplist) { | 864 | list_for_each_entry(mp, &xfs_mount_list, m_mplist) { |
869 | for (ag = 0; ag < mp->m_sb.sb_agcount; ag++) { | 865 | for (ag = 0; ag < mp->m_sb.sb_agcount; ag++) { |
870 | |||
871 | pag = xfs_perag_get(mp, ag); | 866 | pag = xfs_perag_get(mp, ag); |
872 | if (!pag->pag_ici_init) { | ||
873 | xfs_perag_put(pag); | ||
874 | continue; | ||
875 | } | ||
876 | reclaimable += pag->pag_ici_reclaimable; | 867 | reclaimable += pag->pag_ici_reclaimable; |
877 | xfs_perag_put(pag); | 868 | xfs_perag_put(pag); |
878 | } | 869 | } |