mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	[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>
This commit is contained in:
		
							parent
							
								
									8186e517fa
								
							
						
					
					
						commit
						e99ab90d6a
					
				
					 3 changed files with 5 additions and 9 deletions
				
			
		|  | @ -2656,7 +2656,7 @@ xfs_bmbt_init_cursor( | ||||||
| 	cur->bc_blocklog = mp->m_sb.sb_blocklog; | 	cur->bc_blocklog = mp->m_sb.sb_blocklog; | ||||||
| 
 | 
 | ||||||
| 	cur->bc_ops = &xfs_bmbt_ops; | 	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.forksize = XFS_IFORK_SIZE(ip, whichfork); | ||||||
| 	cur->bc_private.b.ip = ip; | 	cur->bc_private.b.ip = ip; | ||||||
|  |  | ||||||
|  | @ -90,7 +90,7 @@ xfs_btree_check_block( | ||||||
| 	int			level,	/* level of the btree block */ | 	int			level,	/* level of the btree block */ | ||||||
| 	xfs_buf_t		*bp)	/* buffer containing block, if any */ | 	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, | 		xfs_btree_check_lblock(cur, (xfs_btree_lblock_t *)block, level, | ||||||
| 			bp); | 			bp); | ||||||
| 	else | 	else | ||||||
|  | @ -516,7 +516,7 @@ xfs_btree_islastblock( | ||||||
| 
 | 
 | ||||||
| 	block = xfs_btree_get_block(cur, level, &bp); | 	block = xfs_btree_get_block(cur, level, &bp); | ||||||
| 	xfs_btree_check_block(cur, block, 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; | 		return be64_to_cpu(block->bb_u.l.bb_rightsib) == NULLDFSBNO; | ||||||
| 	else | 	else | ||||||
| 		return be32_to_cpu(block->bb_u.s.bb_rightsib) == NULLAGBLOCK; | 		return be32_to_cpu(block->bb_u.s.bb_rightsib) == NULLAGBLOCK; | ||||||
|  | @ -808,7 +808,7 @@ xfs_btree_setbuf( | ||||||
| 	if (!bp) | 	if (!bp) | ||||||
| 		return; | 		return; | ||||||
| 	b = XFS_BUF_TO_BLOCK(bp); | 	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) | 		if (be64_to_cpu(b->bb_u.l.bb_leftsib) == NULLDFSBNO) | ||||||
| 			cur->bc_ra[lev] |= XFS_BTCUR_LEFTRA; | 			cur->bc_ra[lev] |= XFS_BTCUR_LEFTRA; | ||||||
| 		if (be64_to_cpu(b->bb_u.l.bb_rightsib) == NULLDFSBNO) | 		if (be64_to_cpu(b->bb_u.l.bb_rightsib) == NULLDFSBNO) | ||||||
|  |  | ||||||
|  | @ -115,11 +115,6 @@ union xfs_btree_rec { | ||||||
| #define	XFS_BB_NUM_BITS		5 | #define	XFS_BB_NUM_BITS		5 | ||||||
| #define	XFS_BB_ALL_BITS		((1 << XFS_BB_NUM_BITS) - 1) | #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. |  * Magic numbers for btree blocks. | ||||||
|  */ |  */ | ||||||
|  | @ -203,6 +198,7 @@ typedef struct xfs_btree_cur | ||||||
| } xfs_btree_cur_t; | } xfs_btree_cur_t; | ||||||
| 
 | 
 | ||||||
| /* cursor flags */ | /* 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 */ | #define XFS_BTREE_ROOT_IN_INODE		(1<<1)	/* root may be variable size */ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Christoph Hellwig
						Christoph Hellwig