diff options
Diffstat (limited to 'fs/xfs')
| -rw-r--r-- | fs/xfs/xfs_btree.c | 6 | ||||
| -rw-r--r-- | fs/xfs/xfs_btree.h | 2 | ||||
| -rw-r--r-- | fs/xfs/xfs_ialloc.c | 6 | ||||
| -rw-r--r-- | fs/xfs/xfs_ialloc_btree.c | 38 | ||||
| -rw-r--r-- | fs/xfs/xfs_ialloc_btree.h | 19 | ||||
| -rw-r--r-- | fs/xfs/xfs_itable.c | 26 | 
6 files changed, 51 insertions, 46 deletions
diff --git a/fs/xfs/xfs_btree.c b/fs/xfs/xfs_btree.c index ee2255bd656..ab6f615d32c 100644 --- a/fs/xfs/xfs_btree.c +++ b/fs/xfs/xfs_btree.c @@ -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: diff --git a/fs/xfs/xfs_btree.h b/fs/xfs/xfs_btree.h index 44f1bd98064..2ab156506ac 100644 --- a/fs/xfs/xfs_btree.h +++ b/fs/xfs/xfs_btree.h @@ -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 # */ diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 33164a85aa9..1a5e3ff33ef 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -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; diff --git a/fs/xfs/xfs_ialloc_btree.c b/fs/xfs/xfs_ialloc_btree.c index 616eeeb6953..c848141c597 100644 --- a/fs/xfs/xfs_ialloc_btree.c +++ b/fs/xfs/xfs_ialloc_btree.c @@ -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;  	} diff --git a/fs/xfs/xfs_ialloc_btree.h b/fs/xfs/xfs_ialloc_btree.h index ae3904cb1ee..2c0e49893ff 100644 --- a/fs/xfs/xfs_ialloc_btree.h +++ b/fs/xfs/xfs_ialloc_btree.h @@ -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)) diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c index 46249e4d1fe..7521f301ee5 100644 --- a/fs/xfs/xfs_itable.c +++ b/fs/xfs/xfs_itable.c @@ -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) {  |