blks_per_buf = xfs_icluster_size_fsb(mp);
else
blks_per_buf = mp->m_ialloc_blks;
- inodes_per_buf = min(blks_per_buf << mp->m_sb.sb_inopblog,
+ inodes_per_buf = min(XFS_FSB_TO_INO(mp, blks_per_buf),
XFS_INODES_PER_CHUNK);
if (be32_to_cpu(block->bb_magic) != XFS_IBT_MAGIC &&
blks_per_buf = xfs_icluster_size_fsb(mp);
else
blks_per_buf = mp->m_ialloc_blks;
- inodes_per_buf = min(blks_per_buf << mp->m_sb.sb_inopblog,
+ inodes_per_buf = min(XFS_FSB_TO_INO(mp, blks_per_buf),
XFS_INODES_PER_CHUNK);
if (be32_to_cpu(block->bb_magic) != XFS_FIBT_MAGIC &&
break;
case CT_AGINO:
v = (v >> mp->m_sb.sb_inodelog) %
- (mp->m_sb.sb_agblocks << mp->m_sb.sb_inopblog);
+ XFS_AGB_TO_AGINO(mp, mp->m_sb.sb_agblocks);
break;
case CT_AGNUMBER:
v = xfs_daddr_to_agno(mp, v >> BBSHIFT);
case CT_INO:
v = XFS_AGINO_TO_INO(mp, xfs_daddr_to_agno(mp, v >> BBSHIFT),
(v >> mp->m_sb.sb_inodelog) %
- (mp->m_sb.sb_agblocks << mp->m_sb.sb_inopblog));
+ XFS_AGB_TO_AGINO(mp, mp->m_sb.sb_agblocks));
break;
case CT_INOIDX:
v = (v >> mp->m_sb.sb_inodelog) & (mp->m_sb.sb_inopblock - 1);
blks_per_buf = xfs_icluster_size_fsb(mp);
else
blks_per_buf = mp->m_ialloc_blks;
- inodes_per_buf = min(blks_per_buf << mp->m_sb.sb_inopblog,
+ inodes_per_buf = min(XFS_FSB_TO_INO(mp, blks_per_buf),
XFS_INODES_PER_CHUNK);
if (level == 0) {
*/
ino = XFS_AGINO_TO_INO(mp, xfs_daddr_to_agno(mp, b),
((b << BBSHIFT) >> mp->m_sb.sb_inodelog) %
- (mp->m_sb.sb_agblocks << mp->m_sb.sb_inopblog));
+ XFS_AGB_TO_AGINO(mp, mp->m_sb.sb_agblocks));
set_cur_inode(ino);
return;
}
blks_per_buf = xfs_icluster_size_fsb(mp);
else
blks_per_buf = mp->m_ialloc_blks;
- inodes_per_buf = min(blks_per_buf << mp->m_sb.sb_inopblog,
+ inodes_per_buf = min(XFS_FSB_TO_INO(mp, blks_per_buf),
XFS_INODES_PER_CHUNK);
/*
* If we mount with the inode64 option, or no inode overflows
* the legacy 32-bit address space clear the inode32 option.
*/
- agino = XFS_OFFBNO_TO_AGINO(mp, sbp->sb_agblocks - 1, 0);
+ agino = XFS_AGB_TO_AGINO(mp, sbp->sb_agblocks - 1);
ino = XFS_AGINO_TO_INO(mp, agcount - 1, agino);
if ((mp->m_flags & XFS_MOUNT_SMALL_INUMS) && ino > XFS_MAXINUMBER_32)
* units we allocate inodes in.
*/
mp->m_maxicount = (sbp->sb_dblocks * sbp->sb_imax_pct) / 100;
- mp->m_maxicount = ((mp->m_maxicount / mp->m_ialloc_blks) *
- mp->m_ialloc_blks) << sbp->sb_inopblog;
+ mp->m_maxicount = XFS_FSB_TO_INO(mp,
+ (mp->m_maxicount / mp->m_ialloc_blks) *
+ mp->m_ialloc_blks);
} else
mp->m_maxicount = 0;
((i) & XFS_INO_MASK(XFS_INO_OFFSET_BITS(mp)))
#define XFS_OFFBNO_TO_AGINO(mp,b,o) \
((xfs_agino_t)(((b) << XFS_INO_OFFSET_BITS(mp)) | (o)))
+#define XFS_FSB_TO_INO(mp, b) ((xfs_ino_t)((b) << XFS_INO_OFFSET_BITS(mp)))
+#define XFS_AGB_TO_AGINO(mp, b) ((xfs_agino_t)((b) << XFS_INO_OFFSET_BITS(mp)))
#define XFS_MAXINUMBER ((xfs_ino_t)((1ULL << 56) - 1ULL))
#define XFS_MAXINUMBER_32 ((xfs_ino_t)((1ULL << 32) - 1ULL))
* blocks size.
*/
blks_per_cluster = xfs_icluster_size_fsb(mp);
- inodes_per_cluster = blks_per_cluster << mp->m_sb.sb_inopblog;
+ inodes_per_cluster = XFS_FSB_TO_INO(mp, blks_per_cluster);
nbufs = length / blks_per_cluster;
/*
*
* For v3 inodes, we also need to write the inode number into the inode,
* so calculate the first inode number of the chunk here as
- * XFS_OFFBNO_TO_AGINO() only works within a filesystem block, not
+ * XFS_AGB_TO_AGINO() only works within a filesystem block, not
* across multiple filesystem blocks (such as a cluster) and so cannot
* be used in the cluster buffer loop below.
*
*/
if (xfs_sb_version_hascrc(&mp->m_sb)) {
version = 3;
- ino = XFS_AGINO_TO_INO(mp, agno,
- XFS_OFFBNO_TO_AGINO(mp, agbno, 0));
+ ino = XFS_AGINO_TO_INO(mp, agno, XFS_AGB_TO_AGINO(mp, agbno));
/*
* log the initialisation that is about to take place as an
return;
/* calculate the inode offset and align startino */
- offset = mod << mp->m_sb.sb_inopblog;
+ offset = XFS_AGB_TO_AGINO(mp, mod);
*startino -= offset;
/*
if (error)
return error;
- newlen = args.len << args.mp->m_sb.sb_inopblog;
+ newlen = XFS_AGB_TO_AGINO(args.mp, args.len);
ASSERT(newlen <= XFS_INODES_PER_CHUNK);
allocmask = (1 << (newlen / XFS_INODES_PER_HOLEMASK_BIT)) - 1;
}
/*
* Convert the results.
*/
- newino = XFS_OFFBNO_TO_AGINO(args.mp, args.agbno, 0);
+ newino = XFS_AGB_TO_AGINO(args.mp, args.agbno);
if (xfs_inobt_issparse(~allocmask)) {
/*
xfs_agino_t low;
xfs_agino_t high;
- low = XFS_OFFBNO_TO_AGINO(cur->bc_mp, bno, 0);
- high = XFS_OFFBNO_TO_AGINO(cur->bc_mp, bno + len, 0) - 1;
+ low = XFS_AGB_TO_AGINO(cur->bc_mp, bno);
+ high = XFS_AGB_TO_AGINO(cur->bc_mp, bno + len) - 1;
return xfs_ialloc_has_inode_record(cur, low, high, exists);
}
*/
bno = round_up(XFS_AGFL_BLOCK(mp) + 1,
xfs_ialloc_cluster_alignment(mp));
- *first = XFS_OFFBNO_TO_AGINO(mp, bno, 0);
+ *first = XFS_AGB_TO_AGINO(mp, bno);
/*
* Calculate the last inode, which will be at the end of the
* last (aligned) cluster that can be allocated in the AG.
*/
bno = round_down(eoag, xfs_ialloc_cluster_alignment(mp));
- *last = XFS_OFFBNO_TO_AGINO(mp, bno, 0) - 1;
+ *last = XFS_AGB_TO_AGINO(mp, bno) - 1;
}
/*
pthread_mutex_unlock(&ag_locks[agno].lock);
- start_agino = XFS_OFFBNO_TO_AGINO(mp, agbno, 0);
+ start_agino = XFS_AGB_TO_AGINO(mp, agbno);
*start_ino = XFS_AGINO_TO_INO(mp, agno, start_agino);
/*
* ok, put the record into the tree, if no conflict.
*/
if (find_uncertain_inode_rec(agno,
- XFS_OFFBNO_TO_AGINO(mp, start_agbno, 0)))
+ XFS_AGB_TO_AGINO(mp, start_agbno)))
return(0);
- start_agino = XFS_OFFBNO_TO_AGINO(mp, start_agbno, 0);
+ start_agino = XFS_AGB_TO_AGINO(mp, start_agbno);
*start_ino = XFS_AGINO_TO_INO(mp, agno, start_agino);
irec_p = set_inode_free_alloc(mp, agno,
- XFS_OFFBNO_TO_AGINO(mp, start_agbno, 0));
+ XFS_AGB_TO_AGINO(mp, start_agbno));
for (i = 1; i < XFS_INODES_PER_CHUNK; i++)
set_inode_free(irec_p, i);
*/
irec_before_p = irec_after_p = NULL;
- find_inode_rec_range(mp, agno, XFS_OFFBNO_TO_AGINO(mp, start_agbno, 0),
+ find_inode_rec_range(mp, agno, XFS_AGB_TO_AGINO(mp, start_agbno),
XFS_OFFBNO_TO_AGINO(mp, end_agbno, mp->m_sb.sb_inopblock - 1),
&irec_before_p, &irec_after_p);
* ok because we'll override the free setting later if the
* contents of the inode indicate it's in use.
*/
- start_agino = XFS_OFFBNO_TO_AGINO(mp, chunk_start_agbno, 0);
+ start_agino = XFS_AGB_TO_AGINO(mp, chunk_start_agbno);
*start_ino = XFS_AGINO_TO_INO(mp, agno, start_agino);
ASSERT(find_inode_rec(mp, agno, start_agino) == NULL);
* ditto the location of the first inode chunks in the fs ('/')
*/
if (xfs_sb_version_hasdalign(&mp->m_sb) && do_inoalign) {
- first_prealloc_ino = XFS_OFFBNO_TO_AGINO(mp, roundup(fino_bno,
- mp->m_sb.sb_unit), 0);
+ first_prealloc_ino = XFS_AGB_TO_AGINO(mp, roundup(fino_bno,
+ mp->m_sb.sb_unit));
} else if (xfs_sb_version_hasalign(&mp->m_sb) &&
mp->m_sb.sb_inoalignmt > 1) {
- first_prealloc_ino = XFS_OFFBNO_TO_AGINO(mp,
+ first_prealloc_ino = XFS_AGB_TO_AGINO(mp,
roundup(fino_bno,
- mp->m_sb.sb_inoalignmt),
- 0);
+ mp->m_sb.sb_inoalignmt));
} else {
- first_prealloc_ino = XFS_OFFBNO_TO_AGINO(mp, fino_bno, 0);
+ first_prealloc_ino = XFS_AGB_TO_AGINO(mp, fino_bno);
}
ASSERT(mp->m_ialloc_blks > 0);
if (mp->m_ialloc_blks > 1)
last_prealloc_ino = first_prealloc_ino + XFS_INODES_PER_CHUNK;
else
- last_prealloc_ino = XFS_OFFBNO_TO_AGINO(mp, fino_bno + 1, 0);
+ last_prealloc_ino = XFS_AGB_TO_AGINO(mp, fino_bno + 1);
/*
* now the first 3 inodes in the system