|
@@ -597,8 +597,13 @@ xfs_max_file_offset(
|
|
return (((__uint64_t)pagefactor) << bitshift) - 1;
|
|
return (((__uint64_t)pagefactor) << bitshift) - 1;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * xfs_set_inode32() and xfs_set_inode64() are passed an agcount
|
|
|
|
+ * because in the growfs case, mp->m_sb.sb_agcount is not updated
|
|
|
|
+ * yet to the potentially higher ag count.
|
|
|
|
+ */
|
|
xfs_agnumber_t
|
|
xfs_agnumber_t
|
|
-xfs_set_inode32(struct xfs_mount *mp)
|
|
|
|
|
|
+xfs_set_inode32(struct xfs_mount *mp, xfs_agnumber_t agcount)
|
|
{
|
|
{
|
|
xfs_agnumber_t index = 0;
|
|
xfs_agnumber_t index = 0;
|
|
xfs_agnumber_t maxagi = 0;
|
|
xfs_agnumber_t maxagi = 0;
|
|
@@ -620,10 +625,10 @@ xfs_set_inode32(struct xfs_mount *mp)
|
|
do_div(icount, sbp->sb_agblocks);
|
|
do_div(icount, sbp->sb_agblocks);
|
|
max_metadata = icount;
|
|
max_metadata = icount;
|
|
} else {
|
|
} else {
|
|
- max_metadata = sbp->sb_agcount;
|
|
|
|
|
|
+ max_metadata = agcount;
|
|
}
|
|
}
|
|
|
|
|
|
- for (index = 0; index < sbp->sb_agcount; index++) {
|
|
|
|
|
|
+ for (index = 0; index < 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) {
|
|
@@ -648,11 +653,11 @@ xfs_set_inode32(struct xfs_mount *mp)
|
|
}
|
|
}
|
|
|
|
|
|
xfs_agnumber_t
|
|
xfs_agnumber_t
|
|
-xfs_set_inode64(struct xfs_mount *mp)
|
|
|
|
|
|
+xfs_set_inode64(struct xfs_mount *mp, xfs_agnumber_t agcount)
|
|
{
|
|
{
|
|
xfs_agnumber_t index = 0;
|
|
xfs_agnumber_t index = 0;
|
|
|
|
|
|
- for (index = 0; index < mp->m_sb.sb_agcount; index++) {
|
|
|
|
|
|
+ for (index = 0; index < agcount; index++) {
|
|
struct xfs_perag *pag;
|
|
struct xfs_perag *pag;
|
|
|
|
|
|
pag = xfs_perag_get(mp, index);
|
|
pag = xfs_perag_get(mp, index);
|
|
@@ -1188,6 +1193,7 @@ xfs_fs_remount(
|
|
char *options)
|
|
char *options)
|
|
{
|
|
{
|
|
struct xfs_mount *mp = XFS_M(sb);
|
|
struct xfs_mount *mp = XFS_M(sb);
|
|
|
|
+ xfs_sb_t *sbp = &mp->m_sb;
|
|
substring_t args[MAX_OPT_ARGS];
|
|
substring_t args[MAX_OPT_ARGS];
|
|
char *p;
|
|
char *p;
|
|
int error;
|
|
int error;
|
|
@@ -1208,10 +1214,10 @@ xfs_fs_remount(
|
|
mp->m_flags &= ~XFS_MOUNT_BARRIER;
|
|
mp->m_flags &= ~XFS_MOUNT_BARRIER;
|
|
break;
|
|
break;
|
|
case Opt_inode64:
|
|
case Opt_inode64:
|
|
- mp->m_maxagi = xfs_set_inode64(mp);
|
|
|
|
|
|
+ mp->m_maxagi = xfs_set_inode64(mp, sbp->sb_agcount);
|
|
break;
|
|
break;
|
|
case Opt_inode32:
|
|
case Opt_inode32:
|
|
- mp->m_maxagi = xfs_set_inode32(mp);
|
|
|
|
|
|
+ mp->m_maxagi = xfs_set_inode32(mp, sbp->sb_agcount);
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
/*
|
|
/*
|