diff options
author | Christoph Hellwig <hch@infradead.org> | 2008-10-30 01:53:59 -0400 |
---|---|---|
committer | Lachlan McIlroy <lachlan@sgi.com> | 2008-10-30 01:53:59 -0400 |
commit | 561f7d17390d00444e6cd0b02b7516c91528082e (patch) | |
tree | 59359b995320bf79a55c2f23305960b5ffe74d8f /fs/xfs/xfs_bmap.c | |
parent | f2277f06e626d694e61bb356524ff536ced24acf (diff) |
[XFS] split up xfs_btree_init_cursor
xfs_btree_init_cursor contains close to little shared code for the
different btrees and will get even more non-common code in the future.
Split it up into one routine per btree type.
Because xfs_btree_dup_cursor needs to call the init routine for a generic
btree cursor add a new btree operation vector that contains a dup_cursor
method that initializes a new cursor based on an existing one.
The btree operations vector is based on an idea and code from Dave Chinner
and will grow more entries later during this series.
SGI-PV: 985583
SGI-Modid: xfs-linux-melb:xfs-kern:32176a
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/xfs_bmap.c')
-rw-r--r-- | fs/xfs/xfs_bmap.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index a1aab9275d5a..a84d0c30b485 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c | |||
@@ -422,8 +422,7 @@ xfs_bmap_add_attrfork_btree( | |||
422 | if (ip->i_df.if_broot_bytes <= XFS_IFORK_DSIZE(ip)) | 422 | if (ip->i_df.if_broot_bytes <= XFS_IFORK_DSIZE(ip)) |
423 | *flags |= XFS_ILOG_DBROOT; | 423 | *flags |= XFS_ILOG_DBROOT; |
424 | else { | 424 | else { |
425 | cur = xfs_btree_init_cursor(mp, tp, NULL, 0, XFS_BTNUM_BMAP, ip, | 425 | cur = xfs_bmbt_init_cursor(mp, tp, ip, XFS_DATA_FORK); |
426 | XFS_DATA_FORK); | ||
427 | cur->bc_private.b.flist = flist; | 426 | cur->bc_private.b.flist = flist; |
428 | cur->bc_private.b.firstblock = *firstblock; | 427 | cur->bc_private.b.firstblock = *firstblock; |
429 | if ((error = xfs_bmbt_lookup_ge(cur, 0, 0, 0, &stat))) | 428 | if ((error = xfs_bmbt_lookup_ge(cur, 0, 0, 0, &stat))) |
@@ -3441,8 +3440,7 @@ xfs_bmap_extents_to_btree( | |||
3441 | * Need a cursor. Can't allocate until bb_level is filled in. | 3440 | * Need a cursor. Can't allocate until bb_level is filled in. |
3442 | */ | 3441 | */ |
3443 | mp = ip->i_mount; | 3442 | mp = ip->i_mount; |
3444 | cur = xfs_btree_init_cursor(mp, tp, NULL, 0, XFS_BTNUM_BMAP, ip, | 3443 | cur = xfs_bmbt_init_cursor(mp, tp, ip, whichfork); |
3445 | whichfork); | ||
3446 | cur->bc_private.b.firstblock = *firstblock; | 3444 | cur->bc_private.b.firstblock = *firstblock; |
3447 | cur->bc_private.b.flist = flist; | 3445 | cur->bc_private.b.flist = flist; |
3448 | cur->bc_private.b.flags = wasdel ? XFS_BTCUR_BPRV_WASDEL : 0; | 3446 | cur->bc_private.b.flags = wasdel ? XFS_BTCUR_BPRV_WASDEL : 0; |
@@ -5029,8 +5027,7 @@ xfs_bmapi( | |||
5029 | if (abno == NULLFSBLOCK) | 5027 | if (abno == NULLFSBLOCK) |
5030 | break; | 5028 | break; |
5031 | if ((ifp->if_flags & XFS_IFBROOT) && !cur) { | 5029 | if ((ifp->if_flags & XFS_IFBROOT) && !cur) { |
5032 | cur = xfs_btree_init_cursor(mp, | 5030 | cur = xfs_bmbt_init_cursor(mp, tp, |
5033 | tp, NULL, 0, XFS_BTNUM_BMAP, | ||
5034 | ip, whichfork); | 5031 | ip, whichfork); |
5035 | cur->bc_private.b.firstblock = | 5032 | cur->bc_private.b.firstblock = |
5036 | *firstblock; | 5033 | *firstblock; |
@@ -5147,9 +5144,8 @@ xfs_bmapi( | |||
5147 | */ | 5144 | */ |
5148 | ASSERT(mval->br_blockcount <= len); | 5145 | ASSERT(mval->br_blockcount <= len); |
5149 | if ((ifp->if_flags & XFS_IFBROOT) && !cur) { | 5146 | if ((ifp->if_flags & XFS_IFBROOT) && !cur) { |
5150 | cur = xfs_btree_init_cursor(mp, | 5147 | cur = xfs_bmbt_init_cursor(mp, |
5151 | tp, NULL, 0, XFS_BTNUM_BMAP, | 5148 | tp, ip, whichfork); |
5152 | ip, whichfork); | ||
5153 | cur->bc_private.b.firstblock = | 5149 | cur->bc_private.b.firstblock = |
5154 | *firstblock; | 5150 | *firstblock; |
5155 | cur->bc_private.b.flist = flist; | 5151 | cur->bc_private.b.flist = flist; |
@@ -5440,8 +5436,7 @@ xfs_bunmapi( | |||
5440 | logflags = 0; | 5436 | logflags = 0; |
5441 | if (ifp->if_flags & XFS_IFBROOT) { | 5437 | if (ifp->if_flags & XFS_IFBROOT) { |
5442 | ASSERT(XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_BTREE); | 5438 | ASSERT(XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_BTREE); |
5443 | cur = xfs_btree_init_cursor(mp, tp, NULL, 0, XFS_BTNUM_BMAP, ip, | 5439 | cur = xfs_bmbt_init_cursor(mp, tp, ip, whichfork); |
5444 | whichfork); | ||
5445 | cur->bc_private.b.firstblock = *firstblock; | 5440 | cur->bc_private.b.firstblock = *firstblock; |
5446 | cur->bc_private.b.flist = flist; | 5441 | cur->bc_private.b.flist = flist; |
5447 | cur->bc_private.b.flags = 0; | 5442 | cur->bc_private.b.flags = 0; |