(mainly do less endian swabbing on some code paths).
#
PKG_MAJOR=2
PKG_MINOR=0
-PKG_REVISION=3
+PKG_REVISION=4
PKG_BUILD=0
+xfsprogs (2.0.4-1) unstable; urgency=low
+
+ * New upstream release, minor changes only
+
+ -- Nathan Scott <nathans@debian.org> Wed, 17 Apr 2002 15:30:52 +1000
+
xfsprogs (2.0.3-1) unstable; urgency=low
* New upstream bugfix release
+xfsprogs-2.0.4 (17 April 2002)
+ - Minor update sync'ing with kernel changes (less endian
+ swabbing in libxfs code)
+
xfsprogs-2.0.3 (13 April 2002)
- Important build system update, was causing libxfs to be
built incorrectly, which can cause xfs_repair to fail by
#define XFS_CFORK_Q_ARCH(dcp,arch) xfs_cfork_q_arch(dcp,arch)
#define XFS_CFORK_Q(dcp) xfs_cfork_q(dcp)
#else
-#define XFS_CFORK_Q_ARCH(dcp,arch) (INT_GET((dcp)->di_forkoff, arch) != 0)
+#define XFS_CFORK_Q_ARCH(dcp,arch) (!INT_ISZERO((dcp)->di_forkoff, arch))
#define XFS_CFORK_Q(dcp) ((dcp)->di_forkoff != 0)
#endif
#define CYCLE_LSN(lsn,arch) (INT_GET(((uint *)&(lsn))[LSN_FIELD_CYCLE(arch)], arch))
#define BLOCK_LSN(lsn,arch) (INT_GET(((uint *)&(lsn))[LSN_FIELD_BLOCK(arch)], arch))
+/* this is used in a spot where we might otherwise double-endian-flip */
+#define CYCLE_LSN_NOCONV(lsn,arch) (((uint *)&(lsn))[LSN_FIELD_CYCLE(arch)])
#ifdef __KERNEL__
/*
typedef enum { B_FALSE, B_TRUE } boolean_t;
typedef struct { dev_t dev; } buftarg_t;
#define STATIC
-#define ATTR_ROOT 1 /* use attrs in root namespace */
+#define ATTR_ROOT 0x0002 /* use attrs in root namespace */
#define ENOATTR ENODATA /* Attribute not found */
#define EFSCORRUPTED 990 /* Filesystem is corrupted */
#define ktrace_t void
/*
* Freelist is empty, give up.
*/
- if (INT_GET(agf->agf_flcount, ARCH_CONVERT) == 0) {
+ if (INT_ISZERO(agf->agf_flcount, ARCH_CONVERT)) {
*bnop = NULLAGBLOCK;
return 0;
}
hdr = &leaf->hdr;
INT_SET(hdr->info.magic, ARCH_CONVERT, XFS_ATTR_LEAF_MAGIC);
INT_SET(hdr->firstused, ARCH_CONVERT, XFS_LBSIZE(dp->i_mount));
- if (INT_GET(hdr->firstused, ARCH_CONVERT) == 0) {
+ if (INT_ISZERO(hdr->firstused, ARCH_CONVERT)) {
INT_SET(hdr->firstused, ARCH_CONVERT,
XFS_LBSIZE(dp->i_mount) - XFS_ATTR_LEAF_NAME_ALIGN);
}
sum += INT_GET(map->size, ARCH_CONVERT);
continue;
}
- if (INT_GET(map->size, ARCH_CONVERT) == 0)
+ if (INT_ISZERO(map->size, ARCH_CONVERT))
continue; /* no space in this map */
tmp = entsize;
if (INT_GET(map->base, ARCH_CONVERT)
bcopy(args->name, (char *)name_rmt->name, args->namelen);
entry->flags |= XFS_ATTR_INCOMPLETE;
/* just in case */
- INT_SET(name_rmt->valuelen, ARCH_CONVERT, 0);
- INT_SET(name_rmt->valueblk, ARCH_CONVERT, 0);
+ INT_ZERO(name_rmt->valuelen, ARCH_CONVERT);
+ INT_ZERO(name_rmt->valueblk, ARCH_CONVERT);
args->rmtblkno = 1;
args->rmtblkcnt = XFS_B_TO_FSB(mp, args->valuelen);
}
*/
if (INT_GET(entry->nameidx, ARCH_CONVERT)
< INT_GET(hdr->firstused, ARCH_CONVERT)) {
- INT_SET(hdr->firstused, ARCH_CONVERT,
- INT_GET(entry->nameidx, ARCH_CONVERT));
+ /* both on-disk, don't endian-flip twice */
+ hdr->firstused = entry->nameidx;
}
ASSERT(INT_GET(hdr->firstused, ARCH_CONVERT)
>= ((INT_GET(hdr->count, ARCH_CONVERT)
hdr_d->info = hdr_s->info; /* struct copy */
INT_SET(hdr_d->firstused, ARCH_CONVERT, XFS_LBSIZE(mp));
/* handle truncation gracefully */
- if (INT_GET(hdr_d->firstused, ARCH_CONVERT) == 0) {
+ if (INT_ISZERO(hdr_d->firstused, ARCH_CONVERT)) {
INT_SET(hdr_d->firstused, ARCH_CONVERT,
XFS_LBSIZE(mp) - XFS_ATTR_LEAF_NAME_ALIGN);
}
- INT_SET(hdr_d->usedbytes, ARCH_CONVERT, 0);
- INT_SET(hdr_d->count, ARCH_CONVERT, 0);
+ INT_ZERO(hdr_d->usedbytes, ARCH_CONVERT);
+ INT_ZERO(hdr_d->count, ARCH_CONVERT);
hdr_d->holes = 0;
INT_SET(hdr_d->freemap[0].base, ARCH_CONVERT,
sizeof(xfs_attr_leaf_hdr_t));
* Make altpath point to the block we want to keep and
* path point to the block we want to drop (this one).
*/
- forward = (INT_GET(info->forw, ARCH_CONVERT) != 0);
+ forward = (!INT_ISZERO(info->forw, ARCH_CONVERT));
bcopy(&state->path, &state->altpath, sizeof(state->path));
error = xfs_da_path_shift(state, &state->altpath, forward,
0, &retval);
tmp_leaf = (xfs_attr_leafblock_t *)tmpbuffer;
tmp_hdr = &tmp_leaf->hdr;
tmp_hdr->info = save_hdr->info; /* struct copy */
- INT_SET(tmp_hdr->count, ARCH_CONVERT, 0);
+ INT_ZERO(tmp_hdr->count, ARCH_CONVERT);
INT_SET(tmp_hdr->firstused, ARCH_CONVERT, state->blocksize);
- if (INT_GET(tmp_hdr->firstused, ARCH_CONVERT) == 0) {
+ if (INT_ISZERO(tmp_hdr->firstused, ARCH_CONVERT)) {
INT_SET(tmp_hdr->firstused, ARCH_CONVERT,
state->blocksize - XFS_ATTR_LEAF_NAME_ALIGN);
}
- INT_SET(tmp_hdr->usedbytes, ARCH_CONVERT, 0);
+ INT_ZERO(tmp_hdr->usedbytes, ARCH_CONVERT);
if (xfs_attr_leaf_order(save_blk->bp, drop_blk->bp)) {
xfs_attr_leaf_moveents(drop_leaf, 0, tmp_leaf, 0,
(int)INT_GET(drop_hdr->count, ARCH_CONVERT),
} else {
#endif /* GROT */
INT_MOD(hdr_d->firstused, ARCH_CONVERT, -tmp);
- INT_SET(entry_d->hashval, ARCH_CONVERT,
- INT_GET(entry_s->hashval, ARCH_CONVERT));
- INT_SET(entry_d->nameidx, ARCH_CONVERT,
- INT_GET(hdr_d->firstused,
- ARCH_CONVERT));
+ /* both on-disk, don't endian flip twice */
+ entry_d->hashval = entry_s->hashval;
+ /* both on-disk, don't endian flip twice */
+ entry_d->nameidx = hdr_d->firstused;
entry_d->flags = entry_s->flags;
ASSERT(INT_GET(entry_d->nameidx, ARCH_CONVERT) + tmp
<= XFS_LBSIZE(mp));
INT_SET(hdr_d->freemap[0].size, ARCH_CONVERT,
INT_GET(hdr_d->firstused, ARCH_CONVERT)
- INT_GET(hdr_d->freemap[0].base, ARCH_CONVERT));
- INT_SET(hdr_d->freemap[1].base, ARCH_CONVERT, 0);
- INT_SET(hdr_d->freemap[2].base, ARCH_CONVERT, 0);
- INT_SET(hdr_d->freemap[1].size, ARCH_CONVERT, 0);
- INT_SET(hdr_d->freemap[2].size, ARCH_CONVERT, 0);
+ INT_ZERO(hdr_d->freemap[1].base, ARCH_CONVERT);
+ INT_ZERO(hdr_d->freemap[2].base, ARCH_CONVERT);
+ INT_ZERO(hdr_d->freemap[1].size, ARCH_CONVERT);
+ INT_ZERO(hdr_d->freemap[2].size, ARCH_CONVERT);
hdr_s->holes = 1; /* leaf may not be compact */
}
== XFS_ATTR_LEAF_MAGIC);
if (count)
*count = INT_GET(leaf->hdr.count, ARCH_CONVERT);
- if (INT_GET(leaf->hdr.count, ARCH_CONVERT) == 0)
+ if (INT_ISZERO(leaf->hdr.count, ARCH_CONVERT))
return(0);
return(INT_GET(leaf->entries[INT_GET(leaf->hdr.count,
ARCH_CONVERT)-1].hashval, ARCH_CONVERT));
INT_GET(block->bb_level, ARCH_CONVERT) == level &&
INT_GET(block->bb_numrecs, ARCH_CONVERT) <=
xfs_btree_maxrecs(cur, (xfs_btree_block_t *)block) &&
- INT_GET(block->bb_leftsib, ARCH_CONVERT) != 0 &&
+ !INT_ISZERO(block->bb_leftsib, ARCH_CONVERT) &&
(INT_GET(block->bb_leftsib, ARCH_CONVERT) == NULLDFSBNO ||
XFS_FSB_SANITY_CHECK(mp, INT_GET(block->bb_leftsib, ARCH_CONVERT))) &&
- INT_GET(block->bb_rightsib, ARCH_CONVERT) != 0 &&
+ !INT_ISZERO(block->bb_rightsib, ARCH_CONVERT) &&
(INT_GET(block->bb_rightsib, ARCH_CONVERT) == NULLDFSBNO ||
XFS_FSB_SANITY_CHECK(mp, INT_GET(block->bb_rightsib, ARCH_CONVERT)));
if (XFS_TEST_ERROR(!lblock_ok, mp, XFS_ERRTAG_BTREE_CHECK_LBLOCK,
xfs_btree_maxrecs(cur, (xfs_btree_block_t *)block) &&
(INT_GET(block->bb_leftsib, ARCH_CONVERT) == NULLAGBLOCK ||
INT_GET(block->bb_leftsib, ARCH_CONVERT) < agflen) &&
- INT_GET(block->bb_leftsib, ARCH_CONVERT) != 0 &&
+ !INT_ISZERO(block->bb_leftsib, ARCH_CONVERT) &&
(INT_GET(block->bb_rightsib, ARCH_CONVERT) == NULLAGBLOCK ||
INT_GET(block->bb_rightsib, ARCH_CONVERT) < agflen) &&
- INT_GET(block->bb_rightsib, ARCH_CONVERT) != 0;
+ !INT_ISZERO(block->bb_rightsib, ARCH_CONVERT);
if (XFS_TEST_ERROR(!sblock_ok, cur->bc_mp,
XFS_ERRTAG_BTREE_CHECK_SBLOCK,
XFS_RANDOM_BTREE_CHECK_SBLOCK)) {
/*
* It's empty, there is no such record.
*/
- if (INT_GET(block->bb_h.bb_numrecs, ARCH_CONVERT) == 0)
+ if (INT_ISZERO(block->bb_h.bb_numrecs, ARCH_CONVERT))
return 0;
/*
* Set the ptr value to 1, that's the first record/key.
/*
* It's empty, there is no such record.
*/
- if (INT_GET(block->bb_h.bb_numrecs, ARCH_CONVERT) == 0)
+ if (INT_ISZERO(block->bb_h.bb_numrecs, ARCH_CONVERT))
return 0;
/*
* Set the ptr value to numrecs, that's the last record/key.
} else {
ASSERT(INT_GET(blkinfo->magic, ARCH_CONVERT) == XFS_DA_NODE_MAGIC);
}
- ASSERT(INT_GET(blkinfo->forw, ARCH_CONVERT) == 0);
- ASSERT(INT_GET(blkinfo->back, ARCH_CONVERT) == 0);
+ ASSERT(INT_ISZERO(blkinfo->forw, ARCH_CONVERT));
+ ASSERT(INT_ISZERO(blkinfo->back, ARCH_CONVERT));
bcopy(bp->data, root_blk->bp->data, state->blocksize);
xfs_da_log_buf(args->trans, root_blk->bp, 0, state->blocksize - 1);
error = xfs_da_shrink_inode(args, child, bp);
ASSERT(INT_GET(node->hdr.info.magic, ARCH_CONVERT) == XFS_DA_NODE_MAGIC);
if (count)
*count = INT_GET(node->hdr.count, ARCH_CONVERT);
- if (INT_GET(node->hdr.count, ARCH_CONVERT) == 0)
+ if (INT_ISZERO(node->hdr.count, ARCH_CONVERT))
return(0);
return(INT_GET(node->btree[ INT_GET(node->hdr.count, ARCH_CONVERT)-1 ].hashval, ARCH_CONVERT));
}
(magic != XFS_DIR2_LEAFN_MAGIC) &&
(magic1 != XFS_DIR2_BLOCK_MAGIC) &&
(magic1 != XFS_DIR2_DATA_MAGIC) &&
- (magic1 != XFS_DIR2_FREE_MAGIC),
+ (INT_GET(free->hdr.magic, ARCH_CONVERT) != XFS_DIR2_FREE_MAGIC),
mp, XFS_ERRTAG_DA_READ_BUF,
XFS_RANDOM_DA_READ_BUF)) {
xfs_buftrace("DA READ ERROR", rbp->bps[0]);
/*
* No stale entries? Need space for entry and new leaf.
*/
- if (INT_GET(btp->stale, ARCH_CONVERT) == 0) {
+ if (INT_ISZERO(btp->stale, ARCH_CONVERT)) {
/*
* Tag just before the first leaf entry.
*/
/*
* No stale entries, will use enddup space to hold new leaf.
*/
- if (INT_GET(btp->stale, ARCH_CONVERT) == 0) {
+ if (INT_ISZERO(btp->stale, ARCH_CONVERT)) {
/*
* Mark the space needed for the new leaf entry, now in use.
*/
*/
btp = XFS_DIR2_BLOCK_TAIL_P(mp, block);
INT_SET(btp->count, ARCH_CONVERT, INT_GET(leaf->hdr.count, ARCH_CONVERT) - INT_GET(leaf->hdr.stale, ARCH_CONVERT));
- INT_SET(btp->stale, ARCH_CONVERT, 0);
+ INT_ZERO(btp->stale, ARCH_CONVERT);
xfs_dir2_block_log_tail(tp, dbp);
/*
* Initialize the block leaf area. We compact out stale entries.
/*
* Account for zero bestfree entries.
*/
- if (INT_GET(bf[0].length, ARCH_CONVERT) == 0) {
- ASSERT(INT_GET(bf[0].offset, ARCH_CONVERT) == 0);
+ if (INT_ISZERO(bf[0].length, ARCH_CONVERT)) {
+ ASSERT(INT_ISZERO(bf[0].offset, ARCH_CONVERT));
freeseen |= 1 << 0;
}
- if (INT_GET(bf[1].length, ARCH_CONVERT) == 0) {
- ASSERT(INT_GET(bf[1].offset, ARCH_CONVERT) == 0);
+ if (INT_ISZERO(bf[1].length, ARCH_CONVERT)) {
+ ASSERT(INT_ISZERO(bf[1].offset, ARCH_CONVERT));
freeseen |= 1 << 1;
}
- if (INT_GET(bf[2].length, ARCH_CONVERT) == 0) {
- ASSERT(INT_GET(bf[2].offset, ARCH_CONVERT) == 0);
+ if (INT_ISZERO(bf[2].length, ARCH_CONVERT)) {
+ ASSERT(INT_ISZERO(bf[2].offset, ARCH_CONVERT));
freeseen |= 1 << 2;
}
ASSERT(INT_GET(bf[0].length, ARCH_CONVERT) >= INT_GET(bf[1].length, ARCH_CONVERT));
for (dfp = &d->hdr.bestfree[0], seenzero = matched = 0;
dfp < &d->hdr.bestfree[XFS_DIR2_DATA_FD_COUNT];
dfp++) {
- if (INT_GET(dfp->offset, ARCH_CONVERT) == 0) {
- ASSERT(INT_GET(dfp->length, ARCH_CONVERT) == 0);
+ if (INT_ISZERO(dfp->offset, ARCH_CONVERT)) {
+ ASSERT(INT_ISZERO(dfp->length, ARCH_CONVERT));
seenzero = 1;
continue;
}
for (dfp = &d->hdr.bestfree[0];
dfp < &d->hdr.bestfree[XFS_DIR2_DATA_FD_COUNT];
dfp++) {
- if (INT_GET(dfp->offset, ARCH_CONVERT) == 0)
+ if (INT_ISZERO(dfp->offset, ARCH_CONVERT))
return NULL;
if (INT_GET(dfp->offset, ARCH_CONVERT) == off)
return dfp;
* since the third bestfree is there, there might be more
* entries.
*/
- needscan = INT_GET(d->hdr.bestfree[2].length, ARCH_CONVERT) != 0;
+ needscan = !INT_ISZERO(d->hdr.bestfree[2].length, ARCH_CONVERT);
/*
* Fix up the new big freespace.
*/
dfp = xfs_dir2_data_freeinsert(d, prevdup, needlogp);
ASSERT(dfp == &d->hdr.bestfree[0]);
ASSERT(INT_GET(dfp->length, ARCH_CONVERT) == INT_GET(prevdup->length, ARCH_CONVERT));
- ASSERT(INT_GET(dfp[1].length, ARCH_CONVERT) == 0);
- ASSERT(INT_GET(dfp[2].length, ARCH_CONVERT) == 0);
+ ASSERT(INT_ISZERO(dfp[1].length, ARCH_CONVERT));
+ ASSERT(INT_ISZERO(dfp[2].length, ARCH_CONVERT));
}
}
/*
*/
if (matchfront && matchback) {
if (dfp) {
- needscan = INT_GET(d->hdr.bestfree[2].offset, ARCH_CONVERT) != 0;
+ needscan = !INT_ISZERO(d->hdr.bestfree[2].offset, ARCH_CONVERT);
if (!needscan)
xfs_dir2_data_freeremove(d, dfp, needlogp);
}
* the 2 new will work.
*/
if (dfp) {
- needscan = INT_GET(d->hdr.bestfree[2].length, ARCH_CONVERT) != 0;
+ needscan = !INT_ISZERO(d->hdr.bestfree[2].length, ARCH_CONVERT);
if (!needscan) {
xfs_dir2_data_freeremove(d, dfp, needlogp);
(void)xfs_dir2_data_freeinsert(d, newdup,
* How many bytes do we need in the leaf block?
*/
needbytes =
- (INT_GET(leaf->hdr.stale, ARCH_CONVERT) != 0 ? 0 : (uint)sizeof(leaf->ents[0])) +
+ (!INT_ISZERO(leaf->hdr.stale, ARCH_CONVERT) ? 0 : (uint)sizeof(leaf->ents[0])) +
(use_block != -1 ? 0 : (uint)sizeof(leaf->bests[0]));
/*
* Now kill use_block if it refers to a missing block, so we
* Now we need to make room to insert the leaf entry.
* If there are no stale entries, we just insert a hole at index.
*/
- if (INT_GET(leaf->hdr.stale, ARCH_CONVERT) == 0) {
+ if (INT_ISZERO(leaf->hdr.stale, ARCH_CONVERT)) {
/*
* lep is still good as the index leaf entry.
*/
int to; /* target leaf index */
leaf = bp->data;
- if (INT_GET(leaf->hdr.stale, ARCH_CONVERT) == 0) {
+ if (INT_ISZERO(leaf->hdr.stale, ARCH_CONVERT)) {
return;
}
/*
*/
ASSERT(INT_GET(leaf->hdr.stale, ARCH_CONVERT) == from - to);
INT_MOD(leaf->hdr.count, ARCH_CONVERT, -(INT_GET(leaf->hdr.stale, ARCH_CONVERT)));
- INT_SET(leaf->hdr.stale, ARCH_CONVERT, 0);
+ INT_ZERO(leaf->hdr.stale, ARCH_CONVERT);
xfs_dir2_leaf_log_header(args->trans, bp);
if (loglow != -1)
xfs_dir2_leaf_log_ents(args->trans, bp, loglow, to - 1);
*/
if (magic == XFS_DIR2_LEAF1_MAGIC) {
ltp = XFS_DIR2_LEAF_TAIL_P(mp, leaf);
- INT_SET(ltp->bestcount, ARCH_CONVERT, 0);
+ INT_ZERO(ltp->bestcount, ARCH_CONVERT);
xfs_dir2_leaf_log_tail(tp, bp);
}
*bpp = bp;
leaf = lbp->data;
#ifndef __KERNEL__
- if (INT_GET(leaf->hdr.count, ARCH_CONVERT) == 0)
+ if (INT_ISZERO(leaf->hdr.count, ARCH_CONVERT))
return 0;
#endif
/*
* If there are no useful entries left in the block,
* get rid of the block if we can.
*/
- if (INT_GET(free->hdr.nused, ARCH_CONVERT) == 0) {
+ if (INT_ISZERO(free->hdr.nused, ARCH_CONVERT)) {
error = xfs_dir2_shrink_inode(args, fdb, fbp);
if (error == 0) {
fbp = NULL;
args.justcheck = 0;
args.addname = args.oknoent = 1;
for (i = 0; i < INT_GET(hdr->count, ARCH_CONVERT); entry++, i++) {
- if (INT_GET(entry->nameidx, ARCH_CONVERT) == 0)
+ if (INT_ISZERO(entry->nameidx, ARCH_CONVERT))
continue;
namest = XFS_DIR_LEAF_NAMESTRUCT(leaf, INT_GET(entry->nameidx, ARCH_CONVERT));
args.name = (char *)(namest->name);
sum += INT_GET(map->size, ARCH_CONVERT);
continue;
}
- if (INT_GET(map->size, ARCH_CONVERT) == 0)
+ if (INT_ISZERO(map->size, ARCH_CONVERT))
continue; /* no space in this map */
tmp = entsize;
if (INT_GET(map->base, ARCH_CONVERT) < INT_GET(hdr->firstused, ARCH_CONVERT))
hdr_d = &leaf_d->hdr;
hdr_d->info = hdr_s->info; /* struct copy */
INT_SET(hdr_d->firstused, ARCH_CONVERT, lbsize);
- if (INT_GET(hdr_d->firstused, ARCH_CONVERT) == 0)
+ if (INT_ISZERO(hdr_d->firstused, ARCH_CONVERT))
INT_SET(hdr_d->firstused, ARCH_CONVERT, lbsize - 1);
INT_ZERO(hdr_d->namebytes, ARCH_CONVERT);
INT_ZERO(hdr_d->count, ARCH_CONVERT);
tmp = INT_GET(entry->nameidx, ARCH_CONVERT);
}
INT_SET(hdr->firstused, ARCH_CONVERT, tmp);
- if (INT_GET(hdr->firstused, ARCH_CONVERT) == 0)
+ if (INT_ISZERO(hdr->firstused, ARCH_CONVERT))
INT_SET(hdr->firstused, ARCH_CONVERT, tmp - 1);
} else {
hdr->holes = 1; /* mark as needing compaction */
tmp_hdr->info = save_hdr->info; /* struct copy */
INT_ZERO(tmp_hdr->count, ARCH_CONVERT);
INT_SET(tmp_hdr->firstused, ARCH_CONVERT, state->blocksize);
- if (INT_GET(tmp_hdr->firstused, ARCH_CONVERT) == 0)
+ if (INT_ISZERO(tmp_hdr->firstused, ARCH_CONVERT))
INT_SET(tmp_hdr->firstused, ARCH_CONVERT, state->blocksize - 1);
INT_ZERO(tmp_hdr->namebytes, ARCH_CONVERT);
if (xfs_dir_leaf_order(save_blk->bp, drop_blk->bp)) {
break;
}
ASSERT((probe >= 0) && \
- ((INT_GET(leaf->hdr.count, ARCH_CONVERT) == 0) || (probe < INT_GET(leaf->hdr.count, ARCH_CONVERT))));
+ ((INT_ISZERO(leaf->hdr.count, ARCH_CONVERT)) || (probe < INT_GET(leaf->hdr.count, ARCH_CONVERT))));
ASSERT((span <= 4) || (INT_GET(entry->hashval, ARCH_CONVERT) == hashval));
/*
ASSERT(INT_GET(leaf->hdr.info.magic, ARCH_CONVERT) == XFS_DIR_LEAF_MAGIC);
if (count)
*count = INT_GET(leaf->hdr.count, ARCH_CONVERT);
- if (INT_GET(leaf->hdr.count, ARCH_CONVERT) == 0)
+ if (INT_ISZERO(leaf->hdr.count, ARCH_CONVERT))
return(0);
return(INT_GET(leaf->entries[ INT_GET(leaf->hdr.count, ARCH_CONVERT)-1 ].hashval, ARCH_CONVERT));
}
agcount = mp->m_maxagi;
if (S_ISDIR(mode))
pagno = atomicIncWithWrap((int *)&mp->m_agirotor, agcount);
- else
+ else {
pagno = XFS_INO_TO_AGNO(mp, parent);
+ if (pagno >= agcount)
+ pagno = 0;
+ }
ASSERT(pagno < agcount);
/*
* Loop through allocation groups, looking for one with a little
if (XFS_FORCED_SHUTDOWN(mp))
return (xfs_buf_t *)0;
agno++;
- if (agno == agcount)
+ if (agno >= agcount)
agno = 0;
if (agno == pagno) {
if (flags == 0)
* allocation groups upward, wrapping at the end.
*/
*alloc_done = B_FALSE;
- while (INT_GET(agi->agi_freecount, ARCH_CONVERT) == 0) {
+ while (INT_ISZERO(agi->agi_freecount, ARCH_CONVERT)) {
/*
* Don't do anything if we're not supposed to allocate
* any blocks, just go on to the next ag.
}
#ifdef DEBUG
for (i = 0; i < XFS_AGI_UNLINKED_BUCKETS; i++)
- ASSERT(INT_GET(agi->agi_unlinked[i], ARCH_CONVERT) != 0);
+ ASSERT(!INT_ISZERO(agi->agi_unlinked[i], ARCH_CONVERT));
#endif
XFS_BUF_SET_VTYPE_REF(bp, B_FS_AGI, XFS_AGI_REF);
*bpp = bp;
#endif
for (i=0; i<BTOBB(INT_GET(rhead->h_len, ARCH_CONVERT)); i++) {
- INT_SET(*(uint *)dp, ARCH_CONVERT, INT_GET(*(uint *)&rhead->h_cycle_data[i], ARCH_CONVERT));
+ /* these are both on-disk, so don't endian flip twice */
+ *(uint *)dp = *(uint *)&rhead->h_cycle_data[i];
dp += BBSIZE;
}
#if defined(DEBUG) && defined(XFS_LOUD_RECOVERY)