Commit 4056c1d0 authored by Carlos Maiolino's avatar Carlos Maiolino Committed by Ben Myers

xfs: add inode64->inode32 transition into xfs_set_inode32()

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: default avatarCarlos Maiolino <cmaiolino@redhat.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarMark Tinguely <tinguely@sgi.com>
Signed-off-by: default avatarBen Myers <bpm@sgi.com>
parent 4c083722
...@@ -603,6 +603,7 @@ xfs_agnumber_t ...@@ -603,6 +603,7 @@ xfs_agnumber_t
xfs_set_inode32(struct xfs_mount *mp) xfs_set_inode32(struct xfs_mount *mp)
{ {
xfs_agnumber_t index = 0; xfs_agnumber_t index = 0;
xfs_agnumber_t maxagi = 0;
xfs_sb_t *sbp = &mp->m_sb; xfs_sb_t *sbp = &mp->m_sb;
xfs_agnumber_t max_metadata; xfs_agnumber_t max_metadata;
xfs_agino_t agino = XFS_OFFBNO_TO_AGINO(mp, sbp->sb_agblocks -1, 0); xfs_agino_t agino = XFS_OFFBNO_TO_AGINO(mp, sbp->sb_agblocks -1, 0);
...@@ -626,18 +627,26 @@ xfs_set_inode32(struct xfs_mount *mp) ...@@ -626,18 +627,26 @@ xfs_set_inode32(struct xfs_mount *mp)
for (index = 0; index < sbp->sb_agcount; index++) { for (index = 0; index < sbp->sb_agcount; index++) {
ino = XFS_AGINO_TO_INO(mp, index, agino); ino = XFS_AGINO_TO_INO(mp, index, agino);
if (ino > XFS_MAXINUMBER_32) { if (ino > XFS_MAXINUMBER_32) {
index++; pag = xfs_perag_get(mp, index);
break; pag->pagi_inodeok = 0;
pag->pagf_metadata = 0;
xfs_perag_put(pag);
continue;
} }
pag = xfs_perag_get(mp, index); pag = xfs_perag_get(mp, index);
pag->pagi_inodeok = 1; pag->pagi_inodeok = 1;
maxagi++;
if (index < max_metadata) if (index < max_metadata)
pag->pagf_metadata = 1; pag->pagf_metadata = 1;
xfs_perag_put(pag); xfs_perag_put(pag);
} }
return index; mp->m_flags |= (XFS_MOUNT_32BITINODES |
XFS_MOUNT_SMALL_INUMS);
return maxagi;
} }
xfs_agnumber_t xfs_agnumber_t
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment