Skip to content

Commit

Permalink
xfs: add inode64->inode32 transition into xfs_set_inode32()
Browse files Browse the repository at this point in the history
To make inode32 a remountable option, xfs_set_inode32() should be able
to make a transition from inode64 option, disabling inode allocation on
higher AGs.

Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Mark Tinguely <tinguely@sgi.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
  • Loading branch information
Carlos Maiolino authored and Ben Myers committed Sep 26, 2012
1 parent 4c08372 commit 4056c1d
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions fs/xfs/xfs_super.c
Original file line number Diff line number Diff line change
Expand Up @@ -603,6 +603,7 @@ xfs_agnumber_t
xfs_set_inode32(struct xfs_mount *mp)
{
xfs_agnumber_t index = 0;
xfs_agnumber_t maxagi = 0;
xfs_sb_t *sbp = &mp->m_sb;
xfs_agnumber_t max_metadata;
xfs_agino_t agino = XFS_OFFBNO_TO_AGINO(mp, sbp->sb_agblocks -1, 0);
Expand All @@ -626,18 +627,26 @@ xfs_set_inode32(struct xfs_mount *mp)

for (index = 0; index < sbp->sb_agcount; index++) {
ino = XFS_AGINO_TO_INO(mp, index, agino);

if (ino > XFS_MAXINUMBER_32) {
index++;
break;
pag = xfs_perag_get(mp, index);
pag->pagi_inodeok = 0;
pag->pagf_metadata = 0;
xfs_perag_put(pag);
continue;
}

pag = xfs_perag_get(mp, index);
pag->pagi_inodeok = 1;
maxagi++;
if (index < max_metadata)
pag->pagf_metadata = 1;
xfs_perag_put(pag);
}
return index;
mp->m_flags |= (XFS_MOUNT_32BITINODES |
XFS_MOUNT_SMALL_INUMS);

return maxagi;
}

xfs_agnumber_t
Expand Down

0 comments on commit 4056c1d

Please sign in to comment.