Diff for /xfs-linux/xfs_bmap.c between versions 1.362 and 1.363

version 1.362, 2007/02/06 14:35:53 version 1.363, 2007/02/07 02:51:06
Line 410  xfs_bmap_count_leaves( Line 410  xfs_bmap_count_leaves(
 STATIC int  STATIC int
 xfs_bmap_disk_count_leaves(  xfs_bmap_disk_count_leaves(
         xfs_ifork_t             *ifp,          xfs_ifork_t             *ifp,
         xfs_mount_t             *mp,  
         xfs_extnum_t            idx,          xfs_extnum_t            idx,
         xfs_bmbt_block_t        *block,          xfs_bmbt_block_t        *block,
         int                     numrecs,          int                     numrecs,
Line 4533  xfs_bmap_read_extents( Line 4532  xfs_bmap_read_extents(
                         error0);                          error0);
                 if (level == 0)                  if (level == 0)
                         break;                          break;
                 pp = XFS_BTREE_PTR_ADDR(mp->m_sb.sb_blocksize, xfs_bmbt, block,                  pp = XFS_BTREE_PTR_ADDR(xfs_bmbt, block, 1, mp->m_bmap_dmxr[1]);
                         1, mp->m_bmap_dmxr[1]);  
                 bno = be64_to_cpu(*pp);                  bno = be64_to_cpu(*pp);
                 XFS_WANT_CORRUPTED_GOTO(XFS_FSB_SANITY_CHECK(mp, bno), error0);                  XFS_WANT_CORRUPTED_GOTO(XFS_FSB_SANITY_CHECK(mp, bno), error0);
                 xfs_trans_brelse(tp, bp);                  xfs_trans_brelse(tp, bp);
Line 4577  xfs_bmap_read_extents( Line 4575  xfs_bmap_read_extents(
                 /*                  /*
                  * Copy records into the extent records.                   * Copy records into the extent records.
                  */                   */
                 frp = XFS_BTREE_REC_ADDR(mp->m_sb.sb_blocksize, xfs_bmbt,                  frp = XFS_BTREE_REC_ADDR(xfs_bmbt, block, 1);
                         block, 1, mp->m_bmap_dmxr[0]);  
                 start = i;                  start = i;
                 for (j = 0; j < num_recs; j++, i++, frp++) {                  for (j = 0; j < num_recs; j++, i++, frp++) {
                         trp = xfs_iext_get_ext(ifp, i);                          trp = xfs_iext_get_ext(ifp, i);
Line 6156  xfs_check_block( Line 6153  xfs_check_block(
                 if (root) {                  if (root) {
                         keyp = XFS_BMAP_BROOT_KEY_ADDR(block, i, sz);                          keyp = XFS_BMAP_BROOT_KEY_ADDR(block, i, sz);
                 } else {                  } else {
                         keyp = XFS_BTREE_KEY_ADDR(mp->m_sb.sb_blocksize,                          keyp = XFS_BTREE_KEY_ADDR(xfs_bmbt, block, i);
                                 xfs_bmbt, block, i, dmxr);  
                 }                  }
   
                 if (prevp) {                  if (prevp) {
Line 6172  xfs_check_block( Line 6168  xfs_check_block(
                 if (root) {                  if (root) {
                         pp = XFS_BMAP_BROOT_PTR_ADDR(block, i, sz);                          pp = XFS_BMAP_BROOT_PTR_ADDR(block, i, sz);
                 } else {                  } else {
                         pp = XFS_BTREE_PTR_ADDR(mp->m_sb.sb_blocksize,                          pp = XFS_BTREE_PTR_ADDR(xfs_bmbt, block, i, dmxr);
                                 xfs_bmbt, block, i, dmxr);  
                 }                  }
                 for (j = i+1; j <= be16_to_cpu(block->bb_numrecs); j++) {                  for (j = i+1; j <= be16_to_cpu(block->bb_numrecs); j++) {
                         if (root) {                          if (root) {
                                 thispa = XFS_BMAP_BROOT_PTR_ADDR(block, j, sz);                                  thispa = XFS_BMAP_BROOT_PTR_ADDR(block, j, sz);
                         } else {                          } else {
                                 thispa = XFS_BTREE_PTR_ADDR(mp->m_sb.sb_blocksize,                                  thispa = XFS_BTREE_PTR_ADDR(xfs_bmbt, block, j,
                                         xfs_bmbt, block, j, dmxr);                                                              dmxr);
                         }                          }
                         if (*thispa == *pp) {                          if (*thispa == *pp) {
                                 cmn_err(CE_WARN, "%s: thispa(%d) == pp(%d) %Ld",                                  cmn_err(CE_WARN, "%s: thispa(%d) == pp(%d) %Ld",
Line 6267  xfs_bmap_check_leaf_extents( Line 6262  xfs_bmap_check_leaf_extents(
                  */                   */
   
                 xfs_check_block(block, mp, 0, 0);                  xfs_check_block(block, mp, 0, 0);
                 pp = XFS_BTREE_PTR_ADDR(mp->m_sb.sb_blocksize, xfs_bmbt, block,                  pp = XFS_BTREE_PTR_ADDR(xfs_bmbt, block, 1, mp->m_bmap_dmxr[1]);
                         1, mp->m_bmap_dmxr[1]);  
                 bno = be64_to_cpu(*pp);                  bno = be64_to_cpu(*pp);
                 XFS_WANT_CORRUPTED_GOTO(XFS_FSB_SANITY_CHECK(mp, bno), error0);                  XFS_WANT_CORRUPTED_GOTO(XFS_FSB_SANITY_CHECK(mp, bno), error0);
                 if (bp_release) {                  if (bp_release) {
Line 6305  xfs_bmap_check_leaf_extents( Line 6299  xfs_bmap_check_leaf_extents(
                  * conform with the first entry in this one.                   * conform with the first entry in this one.
                  */                   */
   
                 ep = XFS_BTREE_REC_ADDR(mp->m_sb.sb_blocksize, xfs_bmbt,                  ep = XFS_BTREE_REC_ADDR(xfs_bmbt, block, 1);
                         block, 1, mp->m_bmap_dmxr[0]);  
                 for (j = 1; j < num_recs; j++) {                  for (j = 1; j < num_recs; j++) {
                         nextp = XFS_BTREE_REC_ADDR(mp->m_sb.sb_blocksize, xfs_bmbt,                          nextp = XFS_BTREE_REC_ADDR(xfs_bmbt, block, j + 1);
                                 block, j + 1, mp->m_bmap_dmxr[0]);  
                         if (lastp) {                          if (lastp) {
                                 xfs_btree_check_rec(XFS_BTNUM_BMAP,                                  xfs_btree_check_rec(XFS_BTNUM_BMAP,
                                         (void *)lastp, (void *)ep);                                          (void *)lastp, (void *)ep);
Line 6454  xfs_bmap_count_tree( Line 6446  xfs_bmap_count_tree(
                 }                  }
   
                 /* Dive to the next level */                  /* Dive to the next level */
                 pp = XFS_BTREE_PTR_ADDR(mp->m_sb.sb_blocksize,                  pp = XFS_BTREE_PTR_ADDR(xfs_bmbt, block, 1, mp->m_bmap_dmxr[1]);
                         xfs_bmbt, block, 1, mp->m_bmap_dmxr[1]);  
                 bno = be64_to_cpu(*pp);                  bno = be64_to_cpu(*pp);
                 if (unlikely((error =                  if (unlikely((error =
                      xfs_bmap_count_tree(mp, tp, ifp, bno, level, count)) < 0)) {                       xfs_bmap_count_tree(mp, tp, ifp, bno, level, count)) < 0)) {
Line 6470  xfs_bmap_count_tree( Line 6461  xfs_bmap_count_tree(
                 for (;;) {                  for (;;) {
                         nextbno = be64_to_cpu(block->bb_rightsib);                          nextbno = be64_to_cpu(block->bb_rightsib);
                         numrecs = be16_to_cpu(block->bb_numrecs);                          numrecs = be16_to_cpu(block->bb_numrecs);
                         if (unlikely(xfs_bmap_disk_count_leaves(ifp, mp,                          if (unlikely(xfs_bmap_disk_count_leaves(ifp,
                                         0, block, numrecs, count) < 0)) {                                          0, block, numrecs, count) < 0)) {
                                 xfs_trans_brelse(tp, bp);                                  xfs_trans_brelse(tp, bp);
                                 XFS_ERROR_REPORT("xfs_bmap_count_tree(2)",                                  XFS_ERROR_REPORT("xfs_bmap_count_tree(2)",
Line 6518  xfs_bmap_count_leaves( Line 6509  xfs_bmap_count_leaves(
 int  int
 xfs_bmap_disk_count_leaves(  xfs_bmap_disk_count_leaves(
         xfs_ifork_t             *ifp,          xfs_ifork_t             *ifp,
         xfs_mount_t             *mp,  
         xfs_extnum_t            idx,          xfs_extnum_t            idx,
         xfs_bmbt_block_t        *block,          xfs_bmbt_block_t        *block,
         int                     numrecs,          int                     numrecs,
Line 6528  xfs_bmap_disk_count_leaves( Line 6518  xfs_bmap_disk_count_leaves(
         xfs_bmbt_rec_t  *frp;          xfs_bmbt_rec_t  *frp;
   
         for (b = 1; b <= numrecs; b++) {          for (b = 1; b <= numrecs; b++) {
                 frp = XFS_BTREE_REC_ADDR(mp->m_sb.sb_blocksize,                  frp = XFS_BTREE_REC_ADDR(xfs_bmbt, block, idx + b);
                         xfs_bmbt, block, idx + b, mp->m_bmap_dmxr[0]);  
                 *count += xfs_bmbt_disk_get_blockcount(frp);                  *count += xfs_bmbt_disk_get_blockcount(frp);
         }          }
         return 0;          return 0;

Removed from v.1.362  
changed lines
  Added in v.1.363


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>