diff options
Diffstat (limited to 'fs/xfs/xfs_btree.c')
-rw-r--r-- | fs/xfs/xfs_btree.c | 104 |
1 files changed, 54 insertions, 50 deletions
diff --git a/fs/xfs/xfs_btree.c b/fs/xfs/xfs_btree.c index 9de5a1f312c0..52d5d095fc35 100644 --- a/fs/xfs/xfs_btree.c +++ b/fs/xfs/xfs_btree.c | |||
@@ -90,11 +90,14 @@ xfs_btree_maxrecs( | |||
90 | switch (cur->bc_btnum) { | 90 | switch (cur->bc_btnum) { |
91 | case XFS_BTNUM_BNO: | 91 | case XFS_BTNUM_BNO: |
92 | case XFS_BTNUM_CNT: | 92 | case XFS_BTNUM_CNT: |
93 | return (int)XFS_ALLOC_BLOCK_MAXRECS(INT_GET(block->bb_h.bb_level, ARCH_CONVERT), cur); | 93 | return (int)XFS_ALLOC_BLOCK_MAXRECS( |
94 | be16_to_cpu(block->bb_h.bb_level), cur); | ||
94 | case XFS_BTNUM_BMAP: | 95 | case XFS_BTNUM_BMAP: |
95 | return (int)XFS_BMAP_BLOCK_IMAXRECS(INT_GET(block->bb_h.bb_level, ARCH_CONVERT), cur); | 96 | return (int)XFS_BMAP_BLOCK_IMAXRECS( |
97 | be16_to_cpu(block->bb_h.bb_level), cur); | ||
96 | case XFS_BTNUM_INO: | 98 | case XFS_BTNUM_INO: |
97 | return (int)XFS_INOBT_BLOCK_MAXRECS(INT_GET(block->bb_h.bb_level, ARCH_CONVERT), cur); | 99 | return (int)XFS_INOBT_BLOCK_MAXRECS( |
100 | be16_to_cpu(block->bb_h.bb_level), cur); | ||
98 | default: | 101 | default: |
99 | ASSERT(0); | 102 | ASSERT(0); |
100 | return 0; | 103 | return 0; |
@@ -140,7 +143,7 @@ xfs_btree_check_key( | |||
140 | 143 | ||
141 | k1 = ak1; | 144 | k1 = ak1; |
142 | k2 = ak2; | 145 | k2 = ak2; |
143 | ASSERT(INT_GET(k1->ar_startblock, ARCH_CONVERT) < INT_GET(k2->ar_startblock, ARCH_CONVERT)); | 146 | ASSERT(be32_to_cpu(k1->ar_startblock) < be32_to_cpu(k2->ar_startblock)); |
144 | break; | 147 | break; |
145 | } | 148 | } |
146 | case XFS_BTNUM_CNT: { | 149 | case XFS_BTNUM_CNT: { |
@@ -149,9 +152,9 @@ xfs_btree_check_key( | |||
149 | 152 | ||
150 | k1 = ak1; | 153 | k1 = ak1; |
151 | k2 = ak2; | 154 | k2 = ak2; |
152 | ASSERT(INT_GET(k1->ar_blockcount, ARCH_CONVERT) < INT_GET(k2->ar_blockcount, ARCH_CONVERT) || | 155 | ASSERT(be32_to_cpu(k1->ar_blockcount) < be32_to_cpu(k2->ar_blockcount) || |
153 | (INT_GET(k1->ar_blockcount, ARCH_CONVERT) == INT_GET(k2->ar_blockcount, ARCH_CONVERT) && | 156 | (k1->ar_blockcount == k2->ar_blockcount && |
154 | INT_GET(k1->ar_startblock, ARCH_CONVERT) < INT_GET(k2->ar_startblock, ARCH_CONVERT))); | 157 | be32_to_cpu(k1->ar_startblock) < be32_to_cpu(k2->ar_startblock))); |
155 | break; | 158 | break; |
156 | } | 159 | } |
157 | case XFS_BTNUM_BMAP: { | 160 | case XFS_BTNUM_BMAP: { |
@@ -194,16 +197,16 @@ xfs_btree_check_lblock( | |||
194 | 197 | ||
195 | mp = cur->bc_mp; | 198 | mp = cur->bc_mp; |
196 | lblock_ok = | 199 | lblock_ok = |
197 | INT_GET(block->bb_magic, ARCH_CONVERT) == xfs_magics[cur->bc_btnum] && | 200 | be32_to_cpu(block->bb_magic) == xfs_magics[cur->bc_btnum] && |
198 | INT_GET(block->bb_level, ARCH_CONVERT) == level && | 201 | be16_to_cpu(block->bb_level) == level && |
199 | INT_GET(block->bb_numrecs, ARCH_CONVERT) <= | 202 | be16_to_cpu(block->bb_numrecs) <= |
200 | xfs_btree_maxrecs(cur, (xfs_btree_block_t *)block) && | 203 | xfs_btree_maxrecs(cur, (xfs_btree_block_t *)block) && |
201 | block->bb_leftsib && | 204 | block->bb_leftsib && |
202 | (INT_GET(block->bb_leftsib, ARCH_CONVERT) == NULLDFSBNO || | 205 | (be64_to_cpu(block->bb_leftsib) == NULLDFSBNO || |
203 | XFS_FSB_SANITY_CHECK(mp, INT_GET(block->bb_leftsib, ARCH_CONVERT))) && | 206 | XFS_FSB_SANITY_CHECK(mp, be64_to_cpu(block->bb_leftsib))) && |
204 | block->bb_rightsib && | 207 | block->bb_rightsib && |
205 | (INT_GET(block->bb_rightsib, ARCH_CONVERT) == NULLDFSBNO || | 208 | (be64_to_cpu(block->bb_rightsib) == NULLDFSBNO || |
206 | XFS_FSB_SANITY_CHECK(mp, INT_GET(block->bb_rightsib, ARCH_CONVERT))); | 209 | XFS_FSB_SANITY_CHECK(mp, be64_to_cpu(block->bb_rightsib))); |
207 | if (unlikely(XFS_TEST_ERROR(!lblock_ok, mp, XFS_ERRTAG_BTREE_CHECK_LBLOCK, | 210 | if (unlikely(XFS_TEST_ERROR(!lblock_ok, mp, XFS_ERRTAG_BTREE_CHECK_LBLOCK, |
208 | XFS_RANDOM_BTREE_CHECK_LBLOCK))) { | 211 | XFS_RANDOM_BTREE_CHECK_LBLOCK))) { |
209 | if (bp) | 212 | if (bp) |
@@ -251,8 +254,9 @@ xfs_btree_check_rec( | |||
251 | 254 | ||
252 | r1 = ar1; | 255 | r1 = ar1; |
253 | r2 = ar2; | 256 | r2 = ar2; |
254 | ASSERT(INT_GET(r1->ar_startblock, ARCH_CONVERT) + INT_GET(r1->ar_blockcount, ARCH_CONVERT) <= | 257 | ASSERT(be32_to_cpu(r1->ar_startblock) + |
255 | INT_GET(r2->ar_startblock, ARCH_CONVERT)); | 258 | be32_to_cpu(r1->ar_blockcount) <= |
259 | be32_to_cpu(r2->ar_startblock)); | ||
256 | break; | 260 | break; |
257 | } | 261 | } |
258 | case XFS_BTNUM_CNT: { | 262 | case XFS_BTNUM_CNT: { |
@@ -261,9 +265,9 @@ xfs_btree_check_rec( | |||
261 | 265 | ||
262 | r1 = ar1; | 266 | r1 = ar1; |
263 | r2 = ar2; | 267 | r2 = ar2; |
264 | ASSERT(INT_GET(r1->ar_blockcount, ARCH_CONVERT) < INT_GET(r2->ar_blockcount, ARCH_CONVERT) || | 268 | ASSERT(be32_to_cpu(r1->ar_blockcount) < be32_to_cpu(r2->ar_blockcount) || |
265 | (INT_GET(r1->ar_blockcount, ARCH_CONVERT) == INT_GET(r2->ar_blockcount, ARCH_CONVERT) && | 269 | (r1->ar_blockcount == r2->ar_blockcount && |
266 | INT_GET(r1->ar_startblock, ARCH_CONVERT) < INT_GET(r2->ar_startblock, ARCH_CONVERT))); | 270 | be32_to_cpu(r1->ar_startblock) < be32_to_cpu(r2->ar_startblock))); |
267 | break; | 271 | break; |
268 | } | 272 | } |
269 | case XFS_BTNUM_BMAP: { | 273 | case XFS_BTNUM_BMAP: { |
@@ -311,17 +315,17 @@ xfs_btree_check_sblock( | |||
311 | 315 | ||
312 | agbp = cur->bc_private.a.agbp; | 316 | agbp = cur->bc_private.a.agbp; |
313 | agf = XFS_BUF_TO_AGF(agbp); | 317 | agf = XFS_BUF_TO_AGF(agbp); |
314 | agflen = INT_GET(agf->agf_length, ARCH_CONVERT); | 318 | agflen = be32_to_cpu(agf->agf_length); |
315 | sblock_ok = | 319 | sblock_ok = |
316 | INT_GET(block->bb_magic, ARCH_CONVERT) == xfs_magics[cur->bc_btnum] && | 320 | be32_to_cpu(block->bb_magic) == xfs_magics[cur->bc_btnum] && |
317 | INT_GET(block->bb_level, ARCH_CONVERT) == level && | 321 | be16_to_cpu(block->bb_level) == level && |
318 | INT_GET(block->bb_numrecs, ARCH_CONVERT) <= | 322 | be16_to_cpu(block->bb_numrecs) <= |
319 | xfs_btree_maxrecs(cur, (xfs_btree_block_t *)block) && | 323 | xfs_btree_maxrecs(cur, (xfs_btree_block_t *)block) && |
320 | (INT_GET(block->bb_leftsib, ARCH_CONVERT) == NULLAGBLOCK || | 324 | (be32_to_cpu(block->bb_leftsib) == NULLAGBLOCK || |
321 | INT_GET(block->bb_leftsib, ARCH_CONVERT) < agflen) && | 325 | be32_to_cpu(block->bb_leftsib) < agflen) && |
322 | block->bb_leftsib && | 326 | block->bb_leftsib && |
323 | (INT_GET(block->bb_rightsib, ARCH_CONVERT) == NULLAGBLOCK || | 327 | (be32_to_cpu(block->bb_rightsib) == NULLAGBLOCK || |
324 | INT_GET(block->bb_rightsib, ARCH_CONVERT) < agflen) && | 328 | be32_to_cpu(block->bb_rightsib) < agflen) && |
325 | block->bb_rightsib; | 329 | block->bb_rightsib; |
326 | if (unlikely(XFS_TEST_ERROR(!sblock_ok, cur->bc_mp, | 330 | if (unlikely(XFS_TEST_ERROR(!sblock_ok, cur->bc_mp, |
327 | XFS_ERRTAG_BTREE_CHECK_SBLOCK, | 331 | XFS_ERRTAG_BTREE_CHECK_SBLOCK, |
@@ -352,7 +356,7 @@ xfs_btree_check_sptr( | |||
352 | XFS_WANT_CORRUPTED_RETURN( | 356 | XFS_WANT_CORRUPTED_RETURN( |
353 | level > 0 && | 357 | level > 0 && |
354 | ptr != NULLAGBLOCK && ptr != 0 && | 358 | ptr != NULLAGBLOCK && ptr != 0 && |
355 | ptr < INT_GET(agf->agf_length, ARCH_CONVERT)); | 359 | ptr < be32_to_cpu(agf->agf_length)); |
356 | return 0; | 360 | return 0; |
357 | } | 361 | } |
358 | 362 | ||
@@ -591,15 +595,15 @@ xfs_btree_init_cursor( | |||
591 | case XFS_BTNUM_BNO: | 595 | case XFS_BTNUM_BNO: |
592 | case XFS_BTNUM_CNT: | 596 | case XFS_BTNUM_CNT: |
593 | agf = XFS_BUF_TO_AGF(agbp); | 597 | agf = XFS_BUF_TO_AGF(agbp); |
594 | nlevels = INT_GET(agf->agf_levels[btnum], ARCH_CONVERT); | 598 | nlevels = be32_to_cpu(agf->agf_levels[btnum]); |
595 | break; | 599 | break; |
596 | case XFS_BTNUM_BMAP: | 600 | case XFS_BTNUM_BMAP: |
597 | ifp = XFS_IFORK_PTR(ip, whichfork); | 601 | ifp = XFS_IFORK_PTR(ip, whichfork); |
598 | nlevels = INT_GET(ifp->if_broot->bb_level, ARCH_CONVERT) + 1; | 602 | nlevels = be16_to_cpu(ifp->if_broot->bb_level) + 1; |
599 | break; | 603 | break; |
600 | case XFS_BTNUM_INO: | 604 | case XFS_BTNUM_INO: |
601 | agi = XFS_BUF_TO_AGI(agbp); | 605 | agi = XFS_BUF_TO_AGI(agbp); |
602 | nlevels = INT_GET(agi->agi_level, ARCH_CONVERT); | 606 | nlevels = be32_to_cpu(agi->agi_level); |
603 | break; | 607 | break; |
604 | default: | 608 | default: |
605 | ASSERT(0); | 609 | ASSERT(0); |
@@ -663,9 +667,9 @@ xfs_btree_islastblock( | |||
663 | block = xfs_btree_get_block(cur, level, &bp); | 667 | block = xfs_btree_get_block(cur, level, &bp); |
664 | xfs_btree_check_block(cur, block, level, bp); | 668 | xfs_btree_check_block(cur, block, level, bp); |
665 | if (XFS_BTREE_LONG_PTRS(cur->bc_btnum)) | 669 | if (XFS_BTREE_LONG_PTRS(cur->bc_btnum)) |
666 | return INT_GET(block->bb_u.l.bb_rightsib, ARCH_CONVERT) == NULLDFSBNO; | 670 | return be64_to_cpu(block->bb_u.l.bb_rightsib) == NULLDFSBNO; |
667 | else | 671 | else |
668 | return INT_GET(block->bb_u.s.bb_rightsib, ARCH_CONVERT) == NULLAGBLOCK; | 672 | return be32_to_cpu(block->bb_u.s.bb_rightsib) == NULLAGBLOCK; |
669 | } | 673 | } |
670 | 674 | ||
671 | /* | 675 | /* |
@@ -693,7 +697,7 @@ xfs_btree_lastrec( | |||
693 | /* | 697 | /* |
694 | * Set the ptr value to numrecs, that's the last record/key. | 698 | * Set the ptr value to numrecs, that's the last record/key. |
695 | */ | 699 | */ |
696 | cur->bc_ptrs[level] = INT_GET(block->bb_h.bb_numrecs, ARCH_CONVERT); | 700 | cur->bc_ptrs[level] = be16_to_cpu(block->bb_h.bb_numrecs); |
697 | return 1; | 701 | return 1; |
698 | } | 702 | } |
699 | 703 | ||
@@ -863,38 +867,38 @@ xfs_btree_readahead_core( | |||
863 | case XFS_BTNUM_BNO: | 867 | case XFS_BTNUM_BNO: |
864 | case XFS_BTNUM_CNT: | 868 | case XFS_BTNUM_CNT: |
865 | a = XFS_BUF_TO_ALLOC_BLOCK(cur->bc_bufs[lev]); | 869 | a = XFS_BUF_TO_ALLOC_BLOCK(cur->bc_bufs[lev]); |
866 | if ((lr & XFS_BTCUR_LEFTRA) && INT_GET(a->bb_leftsib, ARCH_CONVERT) != NULLAGBLOCK) { | 870 | if ((lr & XFS_BTCUR_LEFTRA) && be32_to_cpu(a->bb_leftsib) != NULLAGBLOCK) { |
867 | xfs_btree_reada_bufs(cur->bc_mp, cur->bc_private.a.agno, | 871 | xfs_btree_reada_bufs(cur->bc_mp, cur->bc_private.a.agno, |
868 | INT_GET(a->bb_leftsib, ARCH_CONVERT), 1); | 872 | be32_to_cpu(a->bb_leftsib), 1); |
869 | rval++; | 873 | rval++; |
870 | } | 874 | } |
871 | if ((lr & XFS_BTCUR_RIGHTRA) && INT_GET(a->bb_rightsib, ARCH_CONVERT) != NULLAGBLOCK) { | 875 | if ((lr & XFS_BTCUR_RIGHTRA) && be32_to_cpu(a->bb_rightsib) != NULLAGBLOCK) { |
872 | xfs_btree_reada_bufs(cur->bc_mp, cur->bc_private.a.agno, | 876 | xfs_btree_reada_bufs(cur->bc_mp, cur->bc_private.a.agno, |
873 | INT_GET(a->bb_rightsib, ARCH_CONVERT), 1); | 877 | be32_to_cpu(a->bb_rightsib), 1); |
874 | rval++; | 878 | rval++; |
875 | } | 879 | } |
876 | break; | 880 | break; |
877 | case XFS_BTNUM_BMAP: | 881 | case XFS_BTNUM_BMAP: |
878 | b = XFS_BUF_TO_BMBT_BLOCK(cur->bc_bufs[lev]); | 882 | b = XFS_BUF_TO_BMBT_BLOCK(cur->bc_bufs[lev]); |
879 | if ((lr & XFS_BTCUR_LEFTRA) && INT_GET(b->bb_leftsib, ARCH_CONVERT) != NULLDFSBNO) { | 883 | if ((lr & XFS_BTCUR_LEFTRA) && be64_to_cpu(b->bb_leftsib) != NULLDFSBNO) { |
880 | xfs_btree_reada_bufl(cur->bc_mp, INT_GET(b->bb_leftsib, ARCH_CONVERT), 1); | 884 | xfs_btree_reada_bufl(cur->bc_mp, be64_to_cpu(b->bb_leftsib), 1); |
881 | rval++; | 885 | rval++; |
882 | } | 886 | } |
883 | if ((lr & XFS_BTCUR_RIGHTRA) && INT_GET(b->bb_rightsib, ARCH_CONVERT) != NULLDFSBNO) { | 887 | if ((lr & XFS_BTCUR_RIGHTRA) && be64_to_cpu(b->bb_rightsib) != NULLDFSBNO) { |
884 | xfs_btree_reada_bufl(cur->bc_mp, INT_GET(b->bb_rightsib, ARCH_CONVERT), 1); | 888 | xfs_btree_reada_bufl(cur->bc_mp, be64_to_cpu(b->bb_rightsib), 1); |
885 | rval++; | 889 | rval++; |
886 | } | 890 | } |
887 | break; | 891 | break; |
888 | case XFS_BTNUM_INO: | 892 | case XFS_BTNUM_INO: |
889 | i = XFS_BUF_TO_INOBT_BLOCK(cur->bc_bufs[lev]); | 893 | i = XFS_BUF_TO_INOBT_BLOCK(cur->bc_bufs[lev]); |
890 | if ((lr & XFS_BTCUR_LEFTRA) && INT_GET(i->bb_leftsib, ARCH_CONVERT) != NULLAGBLOCK) { | 894 | if ((lr & XFS_BTCUR_LEFTRA) && be32_to_cpu(i->bb_leftsib) != NULLAGBLOCK) { |
891 | xfs_btree_reada_bufs(cur->bc_mp, cur->bc_private.i.agno, | 895 | xfs_btree_reada_bufs(cur->bc_mp, cur->bc_private.i.agno, |
892 | INT_GET(i->bb_leftsib, ARCH_CONVERT), 1); | 896 | be32_to_cpu(i->bb_leftsib), 1); |
893 | rval++; | 897 | rval++; |
894 | } | 898 | } |
895 | if ((lr & XFS_BTCUR_RIGHTRA) && INT_GET(i->bb_rightsib, ARCH_CONVERT) != NULLAGBLOCK) { | 899 | if ((lr & XFS_BTCUR_RIGHTRA) && be32_to_cpu(i->bb_rightsib) != NULLAGBLOCK) { |
896 | xfs_btree_reada_bufs(cur->bc_mp, cur->bc_private.i.agno, | 900 | xfs_btree_reada_bufs(cur->bc_mp, cur->bc_private.i.agno, |
897 | INT_GET(i->bb_rightsib, ARCH_CONVERT), 1); | 901 | be32_to_cpu(i->bb_rightsib), 1); |
898 | rval++; | 902 | rval++; |
899 | } | 903 | } |
900 | break; | 904 | break; |
@@ -926,14 +930,14 @@ xfs_btree_setbuf( | |||
926 | return; | 930 | return; |
927 | b = XFS_BUF_TO_BLOCK(bp); | 931 | b = XFS_BUF_TO_BLOCK(bp); |
928 | if (XFS_BTREE_LONG_PTRS(cur->bc_btnum)) { | 932 | if (XFS_BTREE_LONG_PTRS(cur->bc_btnum)) { |
929 | if (INT_GET(b->bb_u.l.bb_leftsib, ARCH_CONVERT) == NULLDFSBNO) | 933 | if (be64_to_cpu(b->bb_u.l.bb_leftsib) == NULLDFSBNO) |
930 | cur->bc_ra[lev] |= XFS_BTCUR_LEFTRA; | 934 | cur->bc_ra[lev] |= XFS_BTCUR_LEFTRA; |
931 | if (INT_GET(b->bb_u.l.bb_rightsib, ARCH_CONVERT) == NULLDFSBNO) | 935 | if (be64_to_cpu(b->bb_u.l.bb_rightsib) == NULLDFSBNO) |
932 | cur->bc_ra[lev] |= XFS_BTCUR_RIGHTRA; | 936 | cur->bc_ra[lev] |= XFS_BTCUR_RIGHTRA; |
933 | } else { | 937 | } else { |
934 | if (INT_GET(b->bb_u.s.bb_leftsib, ARCH_CONVERT) == NULLAGBLOCK) | 938 | if (be32_to_cpu(b->bb_u.s.bb_leftsib) == NULLAGBLOCK) |
935 | cur->bc_ra[lev] |= XFS_BTCUR_LEFTRA; | 939 | cur->bc_ra[lev] |= XFS_BTCUR_LEFTRA; |
936 | if (INT_GET(b->bb_u.s.bb_rightsib, ARCH_CONVERT) == NULLAGBLOCK) | 940 | if (be32_to_cpu(b->bb_u.s.bb_rightsib) == NULLAGBLOCK) |
937 | cur->bc_ra[lev] |= XFS_BTCUR_RIGHTRA; | 941 | cur->bc_ra[lev] |= XFS_BTCUR_RIGHTRA; |
938 | } | 942 | } |
939 | } | 943 | } |