mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 13:44:15 +08:00
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: 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>
This commit is contained in:
parent
4c0837224c
commit
4056c1d08d
@ -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);
|
||||
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user