diff options
| author | Christoph Hellwig <hch@infradead.org> | 2008-10-30 16:54:33 +1100 | 
|---|---|---|
| committer | Lachlan McIlroy <lachlan@sgi.com> | 2008-10-30 16:54:33 +1100 | 
| commit | e99ab90d6a9e8ac92f05d2c31d44aa7feee15394 (patch) | |
| tree | 49f96f06100aae711eafe75799c4812a001a51ba /fs/xfs | |
| parent | 8186e517fab1854554c48955cdbcbb6710e7baef (diff) | |
| download | olio-linux-3.10-e99ab90d6a9e8ac92f05d2c31d44aa7feee15394.tar.xz olio-linux-3.10-e99ab90d6a9e8ac92f05d2c31d44aa7feee15394.zip  | |
[XFS] add a long pointers flag to xfs_btree_cur
Add a flag to the xfs btree cursor when using long (64bit) block pointers
instead of checking btnum == XFS_BTNUM_BMAP.
SGI-PV: 985583
SGI-Modid: xfs-linux-melb:xfs-kern:32181a
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Bill O'Donnell <billodo@sgi.com>
Signed-off-by: David Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/xfs')
| -rw-r--r-- | fs/xfs/xfs_bmap_btree.c | 2 | ||||
| -rw-r--r-- | fs/xfs/xfs_btree.c | 6 | ||||
| -rw-r--r-- | fs/xfs/xfs_btree.h | 6 | 
3 files changed, 5 insertions, 9 deletions
diff --git a/fs/xfs/xfs_bmap_btree.c b/fs/xfs/xfs_bmap_btree.c index d9bbed676e0..1ec494e111b 100644 --- a/fs/xfs/xfs_bmap_btree.c +++ b/fs/xfs/xfs_bmap_btree.c @@ -2656,7 +2656,7 @@ xfs_bmbt_init_cursor(  	cur->bc_blocklog = mp->m_sb.sb_blocklog;  	cur->bc_ops = &xfs_bmbt_ops; -	cur->bc_flags = XFS_BTREE_ROOT_IN_INODE; +	cur->bc_flags = XFS_BTREE_LONG_PTRS | XFS_BTREE_ROOT_IN_INODE;  	cur->bc_private.b.forksize = XFS_IFORK_SIZE(ip, whichfork);  	cur->bc_private.b.ip = ip; diff --git a/fs/xfs/xfs_btree.c b/fs/xfs/xfs_btree.c index 57e858fbf68..59796b42e9c 100644 --- a/fs/xfs/xfs_btree.c +++ b/fs/xfs/xfs_btree.c @@ -90,7 +90,7 @@ xfs_btree_check_block(  	int			level,	/* level of the btree block */  	xfs_buf_t		*bp)	/* buffer containing block, if any */  { -	if (XFS_BTREE_LONG_PTRS(cur->bc_btnum)) +	if (cur->bc_flags & XFS_BTREE_LONG_PTRS)  		xfs_btree_check_lblock(cur, (xfs_btree_lblock_t *)block, level,  			bp);  	else @@ -516,7 +516,7 @@ xfs_btree_islastblock(  	block = xfs_btree_get_block(cur, level, &bp);  	xfs_btree_check_block(cur, block, level, bp); -	if (XFS_BTREE_LONG_PTRS(cur->bc_btnum)) +	if (cur->bc_flags & XFS_BTREE_LONG_PTRS)  		return be64_to_cpu(block->bb_u.l.bb_rightsib) == NULLDFSBNO;  	else  		return be32_to_cpu(block->bb_u.s.bb_rightsib) == NULLAGBLOCK; @@ -808,7 +808,7 @@ xfs_btree_setbuf(  	if (!bp)  		return;  	b = XFS_BUF_TO_BLOCK(bp); -	if (XFS_BTREE_LONG_PTRS(cur->bc_btnum)) { +	if (cur->bc_flags & XFS_BTREE_LONG_PTRS) {  		if (be64_to_cpu(b->bb_u.l.bb_leftsib) == NULLDFSBNO)  			cur->bc_ra[lev] |= XFS_BTCUR_LEFTRA;  		if (be64_to_cpu(b->bb_u.l.bb_rightsib) == NULLDFSBNO) diff --git a/fs/xfs/xfs_btree.h b/fs/xfs/xfs_btree.h index fefbc69e500..dd93fd39c56 100644 --- a/fs/xfs/xfs_btree.h +++ b/fs/xfs/xfs_btree.h @@ -116,11 +116,6 @@ union xfs_btree_rec {  #define	XFS_BB_ALL_BITS		((1 << XFS_BB_NUM_BITS) - 1)  /* - * Boolean to select which form of xfs_btree_block_t.bb_u to use. - */ -#define	XFS_BTREE_LONG_PTRS(btnum)	((btnum) == XFS_BTNUM_BMAP) - -/*   * Magic numbers for btree blocks.   */  extern const __uint32_t	xfs_magics[]; @@ -203,6 +198,7 @@ typedef struct xfs_btree_cur  } xfs_btree_cur_t;  /* cursor flags */ +#define XFS_BTREE_LONG_PTRS		(1<<0)	/* pointers are 64bits long */  #define XFS_BTREE_ROOT_IN_INODE		(1<<1)	/* root may be variable size */  |