[XFS] endianess annotations for xfs_inobt_rec_t / xfs_inobt_key_t
SGI-PV: 954580 SGI-Modid: xfs-linux-melb:xfs-kern:26556a Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Nathan Scott <nathans@sgi.com> Signed-off-by: Tim Shimmin <tes@sgi.com>
This commit is contained in:
parent
e21010053a
commit
61a2584867
6 changed files with 51 additions and 46 deletions
|
@ -170,7 +170,7 @@ xfs_btree_check_key(
|
|||
|
||||
k1 = ak1;
|
||||
k2 = ak2;
|
||||
ASSERT(INT_GET(k1->ir_startino, ARCH_CONVERT) < INT_GET(k2->ir_startino, ARCH_CONVERT));
|
||||
ASSERT(be32_to_cpu(k1->ir_startino) < be32_to_cpu(k2->ir_startino));
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
@ -285,8 +285,8 @@ xfs_btree_check_rec(
|
|||
|
||||
r1 = ar1;
|
||||
r2 = ar2;
|
||||
ASSERT(INT_GET(r1->ir_startino, ARCH_CONVERT) + XFS_INODES_PER_CHUNK <=
|
||||
INT_GET(r2->ir_startino, ARCH_CONVERT));
|
||||
ASSERT(be32_to_cpu(r1->ir_startino) + XFS_INODES_PER_CHUNK <=
|
||||
be32_to_cpu(r2->ir_startino));
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
|
@ -145,7 +145,7 @@ typedef struct xfs_btree_cur
|
|||
union {
|
||||
xfs_alloc_rec_incore_t a;
|
||||
xfs_bmbt_irec_t b;
|
||||
xfs_inobt_rec_t i;
|
||||
xfs_inobt_rec_incore_t i;
|
||||
} bc_rec; /* current insert/search record value */
|
||||
struct xfs_buf *bc_bufs[XFS_BTREE_MAXLEVELS]; /* buf ptr per level */
|
||||
int bc_ptrs[XFS_BTREE_MAXLEVELS]; /* key/record # */
|
||||
|
|
|
@ -529,10 +529,10 @@ xfs_dialloc(
|
|||
int offset; /* index of inode in chunk */
|
||||
xfs_agino_t pagino; /* parent's a.g. relative inode # */
|
||||
xfs_agnumber_t pagno; /* parent's allocation group number */
|
||||
xfs_inobt_rec_t rec; /* inode allocation record */
|
||||
xfs_inobt_rec_incore_t rec; /* inode allocation record */
|
||||
xfs_agnumber_t tagno; /* testing allocation group number */
|
||||
xfs_btree_cur_t *tcur; /* temp cursor */
|
||||
xfs_inobt_rec_t trec; /* temp inode allocation record */
|
||||
xfs_inobt_rec_incore_t trec; /* temp inode allocation record */
|
||||
|
||||
|
||||
if (*IO_agbp == NULL) {
|
||||
|
@ -945,7 +945,7 @@ xfs_difree(
|
|||
int ilen; /* inodes in an inode cluster */
|
||||
xfs_mount_t *mp; /* mount structure for filesystem */
|
||||
int off; /* offset of inode in inode chunk */
|
||||
xfs_inobt_rec_t rec; /* btree record */
|
||||
xfs_inobt_rec_incore_t rec; /* btree record */
|
||||
|
||||
mp = tp->t_mountp;
|
||||
|
||||
|
|
|
@ -568,7 +568,7 @@ xfs_inobt_insrec(
|
|||
/*
|
||||
* Make a key out of the record data to be inserted, and save it.
|
||||
*/
|
||||
key.ir_startino = recp->ir_startino; /* INT_: direct copy */
|
||||
key.ir_startino = recp->ir_startino;
|
||||
optr = ptr = cur->bc_ptrs[level];
|
||||
/*
|
||||
* If we're off the left edge, return failure.
|
||||
|
@ -641,7 +641,7 @@ xfs_inobt_insrec(
|
|||
return error;
|
||||
#endif
|
||||
ptr = cur->bc_ptrs[level];
|
||||
nrec.ir_startino = nkey.ir_startino; /* INT_: direct copy */
|
||||
nrec.ir_startino = nkey.ir_startino;
|
||||
} else {
|
||||
/*
|
||||
* Otherwise the insert fails.
|
||||
|
@ -950,12 +950,12 @@ xfs_inobt_lookup(
|
|||
xfs_inobt_key_t *kkp;
|
||||
|
||||
kkp = kkbase + keyno - 1;
|
||||
startino = INT_GET(kkp->ir_startino, ARCH_CONVERT);
|
||||
startino = be32_to_cpu(kkp->ir_startino);
|
||||
} else {
|
||||
xfs_inobt_rec_t *krp;
|
||||
|
||||
krp = krbase + keyno - 1;
|
||||
startino = INT_GET(krp->ir_startino, ARCH_CONVERT);
|
||||
startino = be32_to_cpu(krp->ir_startino);
|
||||
}
|
||||
/*
|
||||
* Compute difference to get next direction.
|
||||
|
@ -1160,7 +1160,7 @@ xfs_inobt_lshift(
|
|||
} else {
|
||||
memmove(rrp, rrp + 1, be16_to_cpu(right->bb_numrecs) * sizeof(*rrp));
|
||||
xfs_inobt_log_recs(cur, rbp, 1, be16_to_cpu(right->bb_numrecs));
|
||||
key.ir_startino = rrp->ir_startino; /* INT_: direct copy */
|
||||
key.ir_startino = rrp->ir_startino;
|
||||
rkp = &key;
|
||||
}
|
||||
/*
|
||||
|
@ -1301,9 +1301,9 @@ xfs_inobt_newroot(
|
|||
kp[1] = *XFS_INOBT_KEY_ADDR(right, 1, cur); /* INT_: struct copy */
|
||||
} else {
|
||||
rp = XFS_INOBT_REC_ADDR(left, 1, cur);
|
||||
INT_COPY(kp[0].ir_startino, rp->ir_startino, ARCH_CONVERT);
|
||||
kp[0].ir_startino = rp->ir_startino;
|
||||
rp = XFS_INOBT_REC_ADDR(right, 1, cur);
|
||||
INT_COPY(kp[1].ir_startino, rp->ir_startino, ARCH_CONVERT);
|
||||
kp[1].ir_startino = rp->ir_startino;
|
||||
}
|
||||
xfs_inobt_log_keys(cur, nbp, 1, 2);
|
||||
/*
|
||||
|
@ -1420,7 +1420,7 @@ xfs_inobt_rshift(
|
|||
memmove(rrp + 1, rrp, be16_to_cpu(right->bb_numrecs) * sizeof(*rrp));
|
||||
*rrp = *lrp;
|
||||
xfs_inobt_log_recs(cur, rbp, 1, be16_to_cpu(right->bb_numrecs) + 1);
|
||||
key.ir_startino = rrp->ir_startino; /* INT_: direct copy */
|
||||
key.ir_startino = rrp->ir_startino;
|
||||
rkp = &key;
|
||||
}
|
||||
/*
|
||||
|
@ -1559,7 +1559,7 @@ xfs_inobt_split(
|
|||
rrp = XFS_INOBT_REC_ADDR(right, 1, cur);
|
||||
memcpy(rrp, lrp, be16_to_cpu(right->bb_numrecs) * sizeof(*rrp));
|
||||
xfs_inobt_log_recs(cur, rbp, 1, be16_to_cpu(right->bb_numrecs));
|
||||
keyp->ir_startino = rrp->ir_startino; /* INT_: direct copy */
|
||||
keyp->ir_startino = rrp->ir_startino;
|
||||
}
|
||||
/*
|
||||
* Find the left block number by looking in the buffer.
|
||||
|
@ -1813,9 +1813,9 @@ xfs_inobt_get_rec(
|
|||
* Point to the record and extract its data.
|
||||
*/
|
||||
rec = XFS_INOBT_REC_ADDR(block, ptr, cur);
|
||||
*ino = INT_GET(rec->ir_startino, ARCH_CONVERT);
|
||||
*fcnt = INT_GET(rec->ir_freecount, ARCH_CONVERT);
|
||||
*free = INT_GET(rec->ir_free, ARCH_CONVERT);
|
||||
*ino = be32_to_cpu(rec->ir_startino);
|
||||
*fcnt = be32_to_cpu(rec->ir_freecount);
|
||||
*free = be64_to_cpu(rec->ir_free);
|
||||
*stat = 1;
|
||||
return 0;
|
||||
}
|
||||
|
@ -1930,9 +1930,9 @@ xfs_inobt_insert(
|
|||
|
||||
level = 0;
|
||||
nbno = NULLAGBLOCK;
|
||||
INT_SET(nrec.ir_startino, ARCH_CONVERT, cur->bc_rec.i.ir_startino);
|
||||
INT_SET(nrec.ir_freecount, ARCH_CONVERT, cur->bc_rec.i.ir_freecount);
|
||||
INT_SET(nrec.ir_free, ARCH_CONVERT, cur->bc_rec.i.ir_free);
|
||||
nrec.ir_startino = cpu_to_be32(cur->bc_rec.i.ir_startino);
|
||||
nrec.ir_freecount = cpu_to_be32(cur->bc_rec.i.ir_freecount);
|
||||
nrec.ir_free = cpu_to_be64(cur->bc_rec.i.ir_free);
|
||||
ncur = (xfs_btree_cur_t *)0;
|
||||
pcur = cur;
|
||||
/*
|
||||
|
@ -2060,9 +2060,9 @@ xfs_inobt_update(
|
|||
/*
|
||||
* Fill in the new contents and log them.
|
||||
*/
|
||||
INT_SET(rp->ir_startino, ARCH_CONVERT, ino);
|
||||
INT_SET(rp->ir_freecount, ARCH_CONVERT, fcnt);
|
||||
INT_SET(rp->ir_free, ARCH_CONVERT, free);
|
||||
rp->ir_startino = cpu_to_be32(ino);
|
||||
rp->ir_freecount = cpu_to_be32(fcnt);
|
||||
rp->ir_free = cpu_to_be64(free);
|
||||
xfs_inobt_log_recs(cur, bp, ptr, ptr);
|
||||
/*
|
||||
* Updating first record in leaf. Pass new key value up to our parent.
|
||||
|
@ -2070,7 +2070,7 @@ xfs_inobt_update(
|
|||
if (ptr == 1) {
|
||||
xfs_inobt_key_t key; /* key containing [ino] */
|
||||
|
||||
INT_SET(key.ir_startino, ARCH_CONVERT, ino);
|
||||
key.ir_startino = cpu_to_be32(ino);
|
||||
if ((error = xfs_inobt_updkey(cur, &key, 1)))
|
||||
return error;
|
||||
}
|
||||
|
|
|
@ -47,19 +47,24 @@ static inline xfs_inofree_t xfs_inobt_maskn(int i, int n)
|
|||
/*
|
||||
* Data record structure
|
||||
*/
|
||||
typedef struct xfs_inobt_rec
|
||||
{
|
||||
typedef struct xfs_inobt_rec {
|
||||
__be32 ir_startino; /* starting inode number */
|
||||
__be32 ir_freecount; /* count of free inodes (set bits) */
|
||||
__be64 ir_free; /* free inode mask */
|
||||
} xfs_inobt_rec_t;
|
||||
|
||||
typedef struct xfs_inobt_rec_incore {
|
||||
xfs_agino_t ir_startino; /* starting inode number */
|
||||
__int32_t ir_freecount; /* count of free inodes (set bits) */
|
||||
xfs_inofree_t ir_free; /* free inode mask */
|
||||
} xfs_inobt_rec_t;
|
||||
} xfs_inobt_rec_incore_t;
|
||||
|
||||
|
||||
/*
|
||||
* Key structure
|
||||
*/
|
||||
typedef struct xfs_inobt_key
|
||||
{
|
||||
xfs_agino_t ir_startino; /* starting inode number */
|
||||
typedef struct xfs_inobt_key {
|
||||
__be32 ir_startino; /* starting inode number */
|
||||
} xfs_inobt_key_t;
|
||||
|
||||
/* btree pointer type */
|
||||
|
@ -77,7 +82,7 @@ typedef struct xfs_btree_sblock xfs_inobt_block_t;
|
|||
#define XFS_INOBT_IS_FREE(rp,i) \
|
||||
(((rp)->ir_free & XFS_INOBT_MASK(i)) != 0)
|
||||
#define XFS_INOBT_IS_FREE_DISK(rp,i) \
|
||||
((INT_GET((rp)->ir_free,ARCH_CONVERT) & XFS_INOBT_MASK(i)) != 0)
|
||||
((be64_to_cpu((rp)->ir_free) & XFS_INOBT_MASK(i)) != 0)
|
||||
#define XFS_INOBT_SET_FREE(rp,i) ((rp)->ir_free |= XFS_INOBT_MASK(i))
|
||||
#define XFS_INOBT_CLR_FREE(rp,i) ((rp)->ir_free &= ~XFS_INOBT_MASK(i))
|
||||
|
||||
|
|
|
@ -395,9 +395,9 @@ xfs_bulkstat(
|
|||
gcnt++;
|
||||
}
|
||||
gfree |= XFS_INOBT_MASKN(0, chunkidx);
|
||||
INT_SET(irbp->ir_startino, ARCH_CONVERT, gino);
|
||||
INT_SET(irbp->ir_freecount, ARCH_CONVERT, gcnt);
|
||||
INT_SET(irbp->ir_free, ARCH_CONVERT, gfree);
|
||||
irbp->ir_startino = cpu_to_be32(gino);
|
||||
irbp->ir_freecount = cpu_to_be32(gcnt);
|
||||
irbp->ir_free = cpu_to_be64(gfree);
|
||||
irbp++;
|
||||
agino = gino + XFS_INODES_PER_CHUNK;
|
||||
icount = XFS_INODES_PER_CHUNK - gcnt;
|
||||
|
@ -453,9 +453,9 @@ xfs_bulkstat(
|
|||
* If this chunk has any allocated inodes, save it.
|
||||
*/
|
||||
if (gcnt < XFS_INODES_PER_CHUNK) {
|
||||
INT_SET(irbp->ir_startino, ARCH_CONVERT, gino);
|
||||
INT_SET(irbp->ir_freecount, ARCH_CONVERT, gcnt);
|
||||
INT_SET(irbp->ir_free, ARCH_CONVERT, gfree);
|
||||
irbp->ir_startino = cpu_to_be32(gino);
|
||||
irbp->ir_freecount = cpu_to_be32(gcnt);
|
||||
irbp->ir_free = cpu_to_be64(gfree);
|
||||
irbp++;
|
||||
icount += XFS_INODES_PER_CHUNK - gcnt;
|
||||
}
|
||||
|
@ -488,14 +488,14 @@ xfs_bulkstat(
|
|||
* inodes in that cluster.
|
||||
*/
|
||||
for (agbno = XFS_AGINO_TO_AGBNO(mp,
|
||||
INT_GET(irbp[1].ir_startino, ARCH_CONVERT)),
|
||||
be32_to_cpu(irbp[1].ir_startino)),
|
||||
chunkidx = 0;
|
||||
chunkidx < XFS_INODES_PER_CHUNK;
|
||||
chunkidx += nicluster,
|
||||
agbno += nbcluster) {
|
||||
if (XFS_INOBT_MASKN(chunkidx,
|
||||
nicluster) &
|
||||
~(INT_GET(irbp[1].ir_free, ARCH_CONVERT)))
|
||||
~(be64_to_cpu(irbp[1].ir_free)))
|
||||
xfs_btree_reada_bufs(mp, agno,
|
||||
agbno, nbcluster);
|
||||
}
|
||||
|
@ -503,9 +503,9 @@ xfs_bulkstat(
|
|||
/*
|
||||
* Now process this chunk of inodes.
|
||||
*/
|
||||
for (agino = INT_GET(irbp->ir_startino, ARCH_CONVERT), chunkidx = 0, clustidx = 0;
|
||||
for (agino = be32_to_cpu(irbp->ir_startino), chunkidx = 0, clustidx = 0;
|
||||
ubleft > 0 &&
|
||||
INT_GET(irbp->ir_freecount, ARCH_CONVERT) < XFS_INODES_PER_CHUNK;
|
||||
be32_to_cpu(irbp->ir_freecount) < XFS_INODES_PER_CHUNK;
|
||||
chunkidx++, clustidx++, agino++) {
|
||||
ASSERT(chunkidx < XFS_INODES_PER_CHUNK);
|
||||
/*
|
||||
|
@ -525,7 +525,7 @@ xfs_bulkstat(
|
|||
*/
|
||||
if ((chunkidx & (nicluster - 1)) == 0) {
|
||||
agbno = XFS_AGINO_TO_AGBNO(mp,
|
||||
INT_GET(irbp->ir_startino, ARCH_CONVERT)) +
|
||||
be32_to_cpu(irbp->ir_startino)) +
|
||||
((chunkidx & nimask) >>
|
||||
mp->m_sb.sb_inopblog);
|
||||
|
||||
|
@ -564,13 +564,13 @@ xfs_bulkstat(
|
|||
/*
|
||||
* Skip if this inode is free.
|
||||
*/
|
||||
if (XFS_INOBT_MASK(chunkidx) & INT_GET(irbp->ir_free, ARCH_CONVERT))
|
||||
if (XFS_INOBT_MASK(chunkidx) & be64_to_cpu(irbp->ir_free))
|
||||
continue;
|
||||
/*
|
||||
* Count used inodes as free so we can tell
|
||||
* when the chunk is used up.
|
||||
*/
|
||||
INT_MOD(irbp->ir_freecount, ARCH_CONVERT, +1);
|
||||
be32_add(&irbp->ir_freecount, 1);
|
||||
ino = XFS_AGINO_TO_INO(mp, agno, agino);
|
||||
bno = XFS_AGB_TO_DADDR(mp, agno, agbno);
|
||||
if (flags & BULKSTAT_FG_QUICK) {
|
||||
|
|
Loading…
Reference in a new issue