xfs
[Top] [All Lists]

[PATCH 06/15] add a long pointers flag to xfs_btree_cur

To: xfs@xxxxxxxxxxx
Subject: [PATCH 06/15] add a long pointers flag to xfs_btree_cur
From: Christoph Hellwig <hch@xxxxxx>
Date: Wed, 23 Jul 2008 22:08:53 +0200
Sender: xfs-bounce@xxxxxxxxxxx
User-agent: Mutt/1.3.28i
Add a flag to the xfs btree cursor when using long (64bit) block pointers
instead of checking btnum == XFS_BTNUM_BMAP.


Signed-off-by: Christoph Hellwig <hch@xxxxxx>

Index: linux-2.6-xfs/fs/xfs/xfs_btree.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/xfs_btree.c       2008-07-11 11:12:37.000000000 
+0200
+++ linux-2.6-xfs/fs/xfs/xfs_btree.c    2008-07-11 11:13:15.000000000 +0200
@@ -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
@@ -500,7 +500,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;
@@ -792,7 +792,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)
Index: linux-2.6-xfs/fs/xfs/xfs_btree.h
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/xfs_btree.h       2008-07-11 11:12:37.000000000 
+0200
+++ linux-2.6-xfs/fs/xfs/xfs_btree.h    2008-07-11 11:13:15.000000000 +0200
@@ -121,11 +121,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[];
@@ -211,6 +206,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 */
 
 
Index: linux-2.6-xfs/fs/xfs/xfs_bmap_btree.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/xfs_bmap_btree.c  2008-07-11 11:12:37.000000000 
+0200
+++ linux-2.6-xfs/fs/xfs/xfs_bmap_btree.c       2008-07-11 11:13:15.000000000 
+0200
@@ -2667,7 +2667,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;

-- 


<Prev in Thread] Current Thread [Next in Thread>