xfs: separate inode geometry
Separate the inode geometry information into a distinct structure. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Dave Chinner <dchinner@redhat.com>
This commit is contained in:
@@ -230,7 +230,7 @@ xchk_iallocbt_check_cluster(
|
||||
int error = 0;
|
||||
|
||||
nr_inodes = min_t(unsigned int, XFS_INODES_PER_CHUNK,
|
||||
mp->m_inodes_per_cluster);
|
||||
M_IGEO(mp)->inodes_per_cluster);
|
||||
|
||||
/* Map this inode cluster */
|
||||
agbno = XFS_AGINO_TO_AGBNO(mp, irec->ir_startino + cluster_base);
|
||||
@@ -251,7 +251,7 @@ xchk_iallocbt_check_cluster(
|
||||
*/
|
||||
ir_holemask = (irec->ir_holemask & cluster_mask);
|
||||
imap.im_blkno = XFS_AGB_TO_DADDR(mp, agno, agbno);
|
||||
imap.im_len = XFS_FSB_TO_BB(mp, mp->m_blocks_per_cluster);
|
||||
imap.im_len = XFS_FSB_TO_BB(mp, M_IGEO(mp)->blocks_per_cluster);
|
||||
imap.im_boffset = XFS_INO_TO_OFFSET(mp, irec->ir_startino) <<
|
||||
mp->m_sb.sb_inodelog;
|
||||
|
||||
@@ -276,12 +276,12 @@ xchk_iallocbt_check_cluster(
|
||||
/* If any part of this is a hole, skip it. */
|
||||
if (ir_holemask) {
|
||||
xchk_xref_is_not_owned_by(bs->sc, agbno,
|
||||
mp->m_blocks_per_cluster,
|
||||
M_IGEO(mp)->blocks_per_cluster,
|
||||
&XFS_RMAP_OINFO_INODES);
|
||||
return 0;
|
||||
}
|
||||
|
||||
xchk_xref_is_owned_by(bs->sc, agbno, mp->m_blocks_per_cluster,
|
||||
xchk_xref_is_owned_by(bs->sc, agbno, M_IGEO(mp)->blocks_per_cluster,
|
||||
&XFS_RMAP_OINFO_INODES);
|
||||
|
||||
/* Grab the inode cluster buffer. */
|
||||
@@ -333,7 +333,7 @@ xchk_iallocbt_check_clusters(
|
||||
*/
|
||||
for (cluster_base = 0;
|
||||
cluster_base < XFS_INODES_PER_CHUNK;
|
||||
cluster_base += bs->sc->mp->m_inodes_per_cluster) {
|
||||
cluster_base += M_IGEO(bs->sc->mp)->inodes_per_cluster) {
|
||||
error = xchk_iallocbt_check_cluster(bs, irec, cluster_base);
|
||||
if (error)
|
||||
break;
|
||||
@@ -355,6 +355,7 @@ xchk_iallocbt_rec_alignment(
|
||||
{
|
||||
struct xfs_mount *mp = bs->sc->mp;
|
||||
struct xchk_iallocbt *iabt = bs->private;
|
||||
struct xfs_ino_geometry *igeo = M_IGEO(mp);
|
||||
|
||||
/*
|
||||
* finobt records have different positioning requirements than inobt
|
||||
@@ -372,7 +373,7 @@ xchk_iallocbt_rec_alignment(
|
||||
unsigned int imask;
|
||||
|
||||
imask = min_t(unsigned int, XFS_INODES_PER_CHUNK,
|
||||
mp->m_cluster_align_inodes) - 1;
|
||||
igeo->cluster_align_inodes) - 1;
|
||||
if (irec->ir_startino & imask)
|
||||
xchk_btree_set_corrupt(bs->sc, bs->cur, 0);
|
||||
return;
|
||||
@@ -400,17 +401,17 @@ xchk_iallocbt_rec_alignment(
|
||||
}
|
||||
|
||||
/* inobt records must be aligned to cluster and inoalignmnt size. */
|
||||
if (irec->ir_startino & (mp->m_cluster_align_inodes - 1)) {
|
||||
if (irec->ir_startino & (igeo->cluster_align_inodes - 1)) {
|
||||
xchk_btree_set_corrupt(bs->sc, bs->cur, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (irec->ir_startino & (mp->m_inodes_per_cluster - 1)) {
|
||||
if (irec->ir_startino & (igeo->inodes_per_cluster - 1)) {
|
||||
xchk_btree_set_corrupt(bs->sc, bs->cur, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (mp->m_inodes_per_cluster <= XFS_INODES_PER_CHUNK)
|
||||
if (igeo->inodes_per_cluster <= XFS_INODES_PER_CHUNK)
|
||||
return;
|
||||
|
||||
/*
|
||||
@@ -419,7 +420,7 @@ xchk_iallocbt_rec_alignment(
|
||||
* after this one.
|
||||
*/
|
||||
iabt->next_startino = irec->ir_startino + XFS_INODES_PER_CHUNK;
|
||||
iabt->next_cluster_ino = irec->ir_startino + mp->m_inodes_per_cluster;
|
||||
iabt->next_cluster_ino = irec->ir_startino + igeo->inodes_per_cluster;
|
||||
}
|
||||
|
||||
/* Scrub an inobt/finobt record. */
|
||||
|
@@ -144,7 +144,7 @@ xchk_quota_item(
|
||||
if (bsoft > bhard)
|
||||
xchk_fblock_set_corrupt(sc, XFS_DATA_FORK, offset);
|
||||
|
||||
if (ihard > mp->m_maxicount)
|
||||
if (ihard > M_IGEO(mp)->maxicount)
|
||||
xchk_fblock_set_warning(sc, XFS_DATA_FORK, offset);
|
||||
if (isoft > ihard)
|
||||
xchk_fblock_set_corrupt(sc, XFS_DATA_FORK, offset);
|
||||
|
Reference in New Issue
Block a user