diff options
Diffstat (limited to 'fs/xfs/xfs_bmap_btree.c')
-rw-r--r-- | fs/xfs/xfs_bmap_btree.c | 286 |
1 files changed, 135 insertions, 151 deletions
diff --git a/fs/xfs/xfs_bmap_btree.c b/fs/xfs/xfs_bmap_btree.c index 09a77b17565b..3f1383d160e8 100644 --- a/fs/xfs/xfs_bmap_btree.c +++ b/fs/xfs/xfs_bmap_btree.c | |||
@@ -1,41 +1,26 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2000-2003 Silicon Graphics, Inc. All Rights Reserved. | 2 | * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc. |
3 | * All Rights Reserved. | ||
3 | * | 4 | * |
4 | * This program is free software; you can redistribute it and/or modify it | 5 | * This program is free software; you can redistribute it and/or |
5 | * under the terms of version 2 of the GNU General Public License as | 6 | * modify it under the terms of the GNU General Public License as |
6 | * published by the Free Software Foundation. | 7 | * published by the Free Software Foundation. |
7 | * | 8 | * |
8 | * This program is distributed in the hope that it would be useful, but | 9 | * This program is distributed in the hope that it would be useful, |
9 | * WITHOUT ANY WARRANTY; without even the implied warranty of | 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 | * GNU General Public License for more details. | ||
11 | * | 13 | * |
12 | * Further, this software is distributed without any warranty that it is | 14 | * You should have received a copy of the GNU General Public License |
13 | * free of the rightful claim of any third person regarding infringement | 15 | * along with this program; if not, write the Free Software Foundation, |
14 | * or the like. Any license provided herein, whether implied or | 16 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
15 | * otherwise, applies only to this software file. Patent licenses, if | ||
16 | * any, provided herein do not apply to combinations of this program with | ||
17 | * other software, or any other product whatsoever. | ||
18 | * | ||
19 | * You should have received a copy of the GNU General Public License along | ||
20 | * with this program; if not, write the Free Software Foundation, Inc., 59 | ||
21 | * Temple Place - Suite 330, Boston MA 02111-1307, USA. | ||
22 | * | ||
23 | * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, | ||
24 | * Mountain View, CA 94043, or: | ||
25 | * | ||
26 | * http://www.sgi.com | ||
27 | * | ||
28 | * For further information regarding this notice, see: | ||
29 | * | ||
30 | * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/ | ||
31 | */ | 17 | */ |
32 | |||
33 | #include "xfs.h" | 18 | #include "xfs.h" |
34 | 19 | #include "xfs_fs.h" | |
35 | #include "xfs_macros.h" | ||
36 | #include "xfs_types.h" | 20 | #include "xfs_types.h" |
37 | #include "xfs_inum.h" | 21 | #include "xfs_bit.h" |
38 | #include "xfs_log.h" | 22 | #include "xfs_log.h" |
23 | #include "xfs_inum.h" | ||
39 | #include "xfs_trans.h" | 24 | #include "xfs_trans.h" |
40 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
41 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
@@ -43,20 +28,19 @@ | |||
43 | #include "xfs_dir2.h" | 28 | #include "xfs_dir2.h" |
44 | #include "xfs_dmapi.h" | 29 | #include "xfs_dmapi.h" |
45 | #include "xfs_mount.h" | 30 | #include "xfs_mount.h" |
46 | #include "xfs_alloc_btree.h" | ||
47 | #include "xfs_bmap_btree.h" | 31 | #include "xfs_bmap_btree.h" |
32 | #include "xfs_alloc_btree.h" | ||
48 | #include "xfs_ialloc_btree.h" | 33 | #include "xfs_ialloc_btree.h" |
49 | #include "xfs_btree.h" | ||
50 | #include "xfs_ialloc.h" | ||
51 | #include "xfs_itable.h" | ||
52 | #include "xfs_attr_sf.h" | ||
53 | #include "xfs_dir_sf.h" | 34 | #include "xfs_dir_sf.h" |
54 | #include "xfs_dir2_sf.h" | 35 | #include "xfs_dir2_sf.h" |
36 | #include "xfs_attr_sf.h" | ||
55 | #include "xfs_dinode.h" | 37 | #include "xfs_dinode.h" |
56 | #include "xfs_inode_item.h" | ||
57 | #include "xfs_inode.h" | 38 | #include "xfs_inode.h" |
39 | #include "xfs_inode_item.h" | ||
58 | #include "xfs_alloc.h" | 40 | #include "xfs_alloc.h" |
59 | #include "xfs_bit.h" | 41 | #include "xfs_btree.h" |
42 | #include "xfs_ialloc.h" | ||
43 | #include "xfs_itable.h" | ||
60 | #include "xfs_bmap.h" | 44 | #include "xfs_bmap.h" |
61 | #include "xfs_error.h" | 45 | #include "xfs_error.h" |
62 | #include "xfs_quota.h" | 46 | #include "xfs_quota.h" |
@@ -382,7 +366,7 @@ xfs_bmbt_delrec( | |||
382 | return 0; | 366 | return 0; |
383 | } | 367 | } |
384 | block = xfs_bmbt_get_block(cur, level, &bp); | 368 | block = xfs_bmbt_get_block(cur, level, &bp); |
385 | numrecs = INT_GET(block->bb_numrecs, ARCH_CONVERT); | 369 | numrecs = be16_to_cpu(block->bb_numrecs); |
386 | #ifdef DEBUG | 370 | #ifdef DEBUG |
387 | if ((error = xfs_btree_check_lblock(cur, block, level, bp))) { | 371 | if ((error = xfs_btree_check_lblock(cur, block, level, bp))) { |
388 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 372 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
@@ -427,7 +411,7 @@ xfs_bmbt_delrec( | |||
427 | } | 411 | } |
428 | } | 412 | } |
429 | numrecs--; | 413 | numrecs--; |
430 | INT_SET(block->bb_numrecs, ARCH_CONVERT, numrecs); | 414 | block->bb_numrecs = cpu_to_be16(numrecs); |
431 | xfs_bmbt_log_block(cur, bp, XFS_BB_NUMRECS); | 415 | xfs_bmbt_log_block(cur, bp, XFS_BB_NUMRECS); |
432 | /* | 416 | /* |
433 | * We're at the root level. | 417 | * We're at the root level. |
@@ -463,8 +447,8 @@ xfs_bmbt_delrec( | |||
463 | *stat = 1; | 447 | *stat = 1; |
464 | return 0; | 448 | return 0; |
465 | } | 449 | } |
466 | rbno = INT_GET(block->bb_rightsib, ARCH_CONVERT); | 450 | rbno = be64_to_cpu(block->bb_rightsib); |
467 | lbno = INT_GET(block->bb_leftsib, ARCH_CONVERT); | 451 | lbno = be64_to_cpu(block->bb_leftsib); |
468 | /* | 452 | /* |
469 | * One child of root, need to get a chance to copy its contents | 453 | * One child of root, need to get a chance to copy its contents |
470 | * into the root and delete it. Can't go up to next level, | 454 | * into the root and delete it. Can't go up to next level, |
@@ -508,15 +492,15 @@ xfs_bmbt_delrec( | |||
508 | goto error0; | 492 | goto error0; |
509 | } | 493 | } |
510 | #endif | 494 | #endif |
511 | bno = INT_GET(right->bb_leftsib, ARCH_CONVERT); | 495 | bno = be64_to_cpu(right->bb_leftsib); |
512 | if (INT_GET(right->bb_numrecs, ARCH_CONVERT) - 1 >= | 496 | if (be16_to_cpu(right->bb_numrecs) - 1 >= |
513 | XFS_BMAP_BLOCK_IMINRECS(level, cur)) { | 497 | XFS_BMAP_BLOCK_IMINRECS(level, cur)) { |
514 | if ((error = xfs_bmbt_lshift(tcur, level, &i))) { | 498 | if ((error = xfs_bmbt_lshift(tcur, level, &i))) { |
515 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 499 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
516 | goto error0; | 500 | goto error0; |
517 | } | 501 | } |
518 | if (i) { | 502 | if (i) { |
519 | ASSERT(INT_GET(block->bb_numrecs, ARCH_CONVERT) >= | 503 | ASSERT(be16_to_cpu(block->bb_numrecs) >= |
520 | XFS_BMAP_BLOCK_IMINRECS(level, tcur)); | 504 | XFS_BMAP_BLOCK_IMINRECS(level, tcur)); |
521 | xfs_btree_del_cursor(tcur, XFS_BTREE_NOERROR); | 505 | xfs_btree_del_cursor(tcur, XFS_BTREE_NOERROR); |
522 | tcur = NULL; | 506 | tcur = NULL; |
@@ -533,7 +517,7 @@ xfs_bmbt_delrec( | |||
533 | return 0; | 517 | return 0; |
534 | } | 518 | } |
535 | } | 519 | } |
536 | rrecs = INT_GET(right->bb_numrecs, ARCH_CONVERT); | 520 | rrecs = be16_to_cpu(right->bb_numrecs); |
537 | if (lbno != NULLFSBLOCK) { | 521 | if (lbno != NULLFSBLOCK) { |
538 | i = xfs_btree_firstrec(tcur, level); | 522 | i = xfs_btree_firstrec(tcur, level); |
539 | XFS_WANT_CORRUPTED_GOTO(i == 1, error0); | 523 | XFS_WANT_CORRUPTED_GOTO(i == 1, error0); |
@@ -564,15 +548,15 @@ xfs_bmbt_delrec( | |||
564 | goto error0; | 548 | goto error0; |
565 | } | 549 | } |
566 | #endif | 550 | #endif |
567 | bno = INT_GET(left->bb_rightsib, ARCH_CONVERT); | 551 | bno = be64_to_cpu(left->bb_rightsib); |
568 | if (INT_GET(left->bb_numrecs, ARCH_CONVERT) - 1 >= | 552 | if (be16_to_cpu(left->bb_numrecs) - 1 >= |
569 | XFS_BMAP_BLOCK_IMINRECS(level, cur)) { | 553 | XFS_BMAP_BLOCK_IMINRECS(level, cur)) { |
570 | if ((error = xfs_bmbt_rshift(tcur, level, &i))) { | 554 | if ((error = xfs_bmbt_rshift(tcur, level, &i))) { |
571 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 555 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
572 | goto error0; | 556 | goto error0; |
573 | } | 557 | } |
574 | if (i) { | 558 | if (i) { |
575 | ASSERT(INT_GET(block->bb_numrecs, ARCH_CONVERT) >= | 559 | ASSERT(be16_to_cpu(block->bb_numrecs) >= |
576 | XFS_BMAP_BLOCK_IMINRECS(level, tcur)); | 560 | XFS_BMAP_BLOCK_IMINRECS(level, tcur)); |
577 | xfs_btree_del_cursor(tcur, XFS_BTREE_NOERROR); | 561 | xfs_btree_del_cursor(tcur, XFS_BTREE_NOERROR); |
578 | tcur = NULL; | 562 | tcur = NULL; |
@@ -583,14 +567,14 @@ xfs_bmbt_delrec( | |||
583 | return 0; | 567 | return 0; |
584 | } | 568 | } |
585 | } | 569 | } |
586 | lrecs = INT_GET(left->bb_numrecs, ARCH_CONVERT); | 570 | lrecs = be16_to_cpu(left->bb_numrecs); |
587 | } | 571 | } |
588 | xfs_btree_del_cursor(tcur, XFS_BTREE_NOERROR); | 572 | xfs_btree_del_cursor(tcur, XFS_BTREE_NOERROR); |
589 | tcur = NULL; | 573 | tcur = NULL; |
590 | mp = cur->bc_mp; | 574 | mp = cur->bc_mp; |
591 | ASSERT(bno != NULLFSBLOCK); | 575 | ASSERT(bno != NULLFSBLOCK); |
592 | if (lbno != NULLFSBLOCK && | 576 | if (lbno != NULLFSBLOCK && |
593 | lrecs + INT_GET(block->bb_numrecs, ARCH_CONVERT) <= XFS_BMAP_BLOCK_IMAXRECS(level, cur)) { | 577 | lrecs + be16_to_cpu(block->bb_numrecs) <= XFS_BMAP_BLOCK_IMAXRECS(level, cur)) { |
594 | rbno = bno; | 578 | rbno = bno; |
595 | right = block; | 579 | right = block; |
596 | rbp = bp; | 580 | rbp = bp; |
@@ -605,7 +589,7 @@ xfs_bmbt_delrec( | |||
605 | goto error0; | 589 | goto error0; |
606 | } | 590 | } |
607 | } else if (rbno != NULLFSBLOCK && | 591 | } else if (rbno != NULLFSBLOCK && |
608 | rrecs + INT_GET(block->bb_numrecs, ARCH_CONVERT) <= | 592 | rrecs + be16_to_cpu(block->bb_numrecs) <= |
609 | XFS_BMAP_BLOCK_IMAXRECS(level, cur)) { | 593 | XFS_BMAP_BLOCK_IMAXRECS(level, cur)) { |
610 | lbno = bno; | 594 | lbno = bno; |
611 | left = block; | 595 | left = block; |
@@ -620,7 +604,7 @@ xfs_bmbt_delrec( | |||
620 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 604 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
621 | goto error0; | 605 | goto error0; |
622 | } | 606 | } |
623 | lrecs = INT_GET(left->bb_numrecs, ARCH_CONVERT); | 607 | lrecs = be16_to_cpu(left->bb_numrecs); |
624 | } else { | 608 | } else { |
625 | if (level > 0 && (error = xfs_bmbt_decrement(cur, level, &i))) { | 609 | if (level > 0 && (error = xfs_bmbt_decrement(cur, level, &i))) { |
626 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 610 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
@@ -630,8 +614,8 @@ xfs_bmbt_delrec( | |||
630 | *stat = 1; | 614 | *stat = 1; |
631 | return 0; | 615 | return 0; |
632 | } | 616 | } |
633 | numlrecs = INT_GET(left->bb_numrecs, ARCH_CONVERT); | 617 | numlrecs = be16_to_cpu(left->bb_numrecs); |
634 | numrrecs = INT_GET(right->bb_numrecs, ARCH_CONVERT); | 618 | numrrecs = be16_to_cpu(right->bb_numrecs); |
635 | if (level > 0) { | 619 | if (level > 0) { |
636 | lkp = XFS_BMAP_KEY_IADDR(left, numlrecs + 1, cur); | 620 | lkp = XFS_BMAP_KEY_IADDR(left, numlrecs + 1, cur); |
637 | lpp = XFS_BMAP_PTR_IADDR(left, numlrecs + 1, cur); | 621 | lpp = XFS_BMAP_PTR_IADDR(left, numlrecs + 1, cur); |
@@ -655,12 +639,12 @@ xfs_bmbt_delrec( | |||
655 | memcpy(lrp, rrp, numrrecs * sizeof(*lrp)); | 639 | memcpy(lrp, rrp, numrrecs * sizeof(*lrp)); |
656 | xfs_bmbt_log_recs(cur, lbp, numlrecs + 1, numlrecs + numrrecs); | 640 | xfs_bmbt_log_recs(cur, lbp, numlrecs + 1, numlrecs + numrrecs); |
657 | } | 641 | } |
658 | INT_MOD(left->bb_numrecs, ARCH_CONVERT, numrrecs); | 642 | be16_add(&left->bb_numrecs, numrrecs); |
659 | left->bb_rightsib = right->bb_rightsib; /* INT_: direct copy */ | 643 | left->bb_rightsib = right->bb_rightsib; |
660 | xfs_bmbt_log_block(cur, lbp, XFS_BB_RIGHTSIB | XFS_BB_NUMRECS); | 644 | xfs_bmbt_log_block(cur, lbp, XFS_BB_RIGHTSIB | XFS_BB_NUMRECS); |
661 | if (INT_GET(left->bb_rightsib, ARCH_CONVERT) != NULLDFSBNO) { | 645 | if (be64_to_cpu(left->bb_rightsib) != NULLDFSBNO) { |
662 | if ((error = xfs_btree_read_bufl(mp, cur->bc_tp, | 646 | if ((error = xfs_btree_read_bufl(mp, cur->bc_tp, |
663 | INT_GET(left->bb_rightsib, ARCH_CONVERT), | 647 | be64_to_cpu(left->bb_rightsib), |
664 | 0, &rrbp, XFS_BMAP_BTREE_REF))) { | 648 | 0, &rrbp, XFS_BMAP_BTREE_REF))) { |
665 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 649 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
666 | goto error0; | 650 | goto error0; |
@@ -670,7 +654,7 @@ xfs_bmbt_delrec( | |||
670 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 654 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
671 | goto error0; | 655 | goto error0; |
672 | } | 656 | } |
673 | INT_SET(rrblock->bb_leftsib, ARCH_CONVERT, lbno); | 657 | rrblock->bb_leftsib = cpu_to_be64(lbno); |
674 | xfs_bmbt_log_block(cur, rrbp, XFS_BB_LEFTSIB); | 658 | xfs_bmbt_log_block(cur, rrbp, XFS_BB_LEFTSIB); |
675 | } | 659 | } |
676 | xfs_bmap_add_free(XFS_DADDR_TO_FSB(mp, XFS_BUF_ADDR(rbp)), 1, | 660 | xfs_bmap_add_free(XFS_DADDR_TO_FSB(mp, XFS_BUF_ADDR(rbp)), 1, |
@@ -727,7 +711,7 @@ xfs_bmbt_get_rec( | |||
727 | if ((error = xfs_btree_check_lblock(cur, block, 0, bp))) | 711 | if ((error = xfs_btree_check_lblock(cur, block, 0, bp))) |
728 | return error; | 712 | return error; |
729 | #endif | 713 | #endif |
730 | if (ptr > INT_GET(block->bb_numrecs, ARCH_CONVERT) || ptr <= 0) { | 714 | if (ptr > be16_to_cpu(block->bb_numrecs) || ptr <= 0) { |
731 | *stat = 0; | 715 | *stat = 0; |
732 | return 0; | 716 | return 0; |
733 | } | 717 | } |
@@ -788,7 +772,7 @@ xfs_bmbt_insrec( | |||
788 | } | 772 | } |
789 | XFS_STATS_INC(xs_bmbt_insrec); | 773 | XFS_STATS_INC(xs_bmbt_insrec); |
790 | block = xfs_bmbt_get_block(cur, level, &bp); | 774 | block = xfs_bmbt_get_block(cur, level, &bp); |
791 | numrecs = INT_GET(block->bb_numrecs, ARCH_CONVERT); | 775 | numrecs = be16_to_cpu(block->bb_numrecs); |
792 | #ifdef DEBUG | 776 | #ifdef DEBUG |
793 | if ((error = xfs_btree_check_lblock(cur, block, level, bp))) { | 777 | if ((error = xfs_btree_check_lblock(cur, block, level, bp))) { |
794 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 778 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
@@ -870,7 +854,7 @@ xfs_bmbt_insrec( | |||
870 | } | 854 | } |
871 | } | 855 | } |
872 | } | 856 | } |
873 | numrecs = INT_GET(block->bb_numrecs, ARCH_CONVERT); | 857 | numrecs = be16_to_cpu(block->bb_numrecs); |
874 | if (level > 0) { | 858 | if (level > 0) { |
875 | kp = XFS_BMAP_KEY_IADDR(block, 1, cur); | 859 | kp = XFS_BMAP_KEY_IADDR(block, 1, cur); |
876 | pp = XFS_BMAP_PTR_IADDR(block, 1, cur); | 860 | pp = XFS_BMAP_PTR_IADDR(block, 1, cur); |
@@ -897,7 +881,7 @@ xfs_bmbt_insrec( | |||
897 | kp[ptr - 1] = key; | 881 | kp[ptr - 1] = key; |
898 | INT_SET(pp[ptr - 1], ARCH_CONVERT, *bnop); | 882 | INT_SET(pp[ptr - 1], ARCH_CONVERT, *bnop); |
899 | numrecs++; | 883 | numrecs++; |
900 | INT_SET(block->bb_numrecs, ARCH_CONVERT, numrecs); | 884 | block->bb_numrecs = cpu_to_be16(numrecs); |
901 | xfs_bmbt_log_keys(cur, bp, ptr, numrecs); | 885 | xfs_bmbt_log_keys(cur, bp, ptr, numrecs); |
902 | xfs_bmbt_log_ptrs(cur, bp, ptr, numrecs); | 886 | xfs_bmbt_log_ptrs(cur, bp, ptr, numrecs); |
903 | } else { | 887 | } else { |
@@ -906,7 +890,7 @@ xfs_bmbt_insrec( | |||
906 | (numrecs - ptr + 1) * sizeof(*rp)); | 890 | (numrecs - ptr + 1) * sizeof(*rp)); |
907 | rp[ptr - 1] = *recp; | 891 | rp[ptr - 1] = *recp; |
908 | numrecs++; | 892 | numrecs++; |
909 | INT_SET(block->bb_numrecs, ARCH_CONVERT, numrecs); | 893 | block->bb_numrecs = cpu_to_be16(numrecs); |
910 | xfs_bmbt_log_recs(cur, bp, ptr, numrecs); | 894 | xfs_bmbt_log_recs(cur, bp, ptr, numrecs); |
911 | } | 895 | } |
912 | xfs_bmbt_log_block(cur, bp, XFS_BB_NUMRECS); | 896 | xfs_bmbt_log_block(cur, bp, XFS_BB_NUMRECS); |
@@ -971,7 +955,7 @@ xfs_bmbt_killroot( | |||
971 | /* | 955 | /* |
972 | * Give up if the root has multiple children. | 956 | * Give up if the root has multiple children. |
973 | */ | 957 | */ |
974 | if (INT_GET(block->bb_numrecs, ARCH_CONVERT) != 1) { | 958 | if (be16_to_cpu(block->bb_numrecs) != 1) { |
975 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); | 959 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); |
976 | return 0; | 960 | return 0; |
977 | } | 961 | } |
@@ -982,37 +966,37 @@ xfs_bmbt_killroot( | |||
982 | */ | 966 | */ |
983 | cbp = cur->bc_bufs[level - 1]; | 967 | cbp = cur->bc_bufs[level - 1]; |
984 | cblock = XFS_BUF_TO_BMBT_BLOCK(cbp); | 968 | cblock = XFS_BUF_TO_BMBT_BLOCK(cbp); |
985 | if (INT_GET(cblock->bb_numrecs, ARCH_CONVERT) > XFS_BMAP_BLOCK_DMAXRECS(level, cur)) { | 969 | if (be16_to_cpu(cblock->bb_numrecs) > XFS_BMAP_BLOCK_DMAXRECS(level, cur)) { |
986 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); | 970 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); |
987 | return 0; | 971 | return 0; |
988 | } | 972 | } |
989 | ASSERT(INT_GET(cblock->bb_leftsib, ARCH_CONVERT) == NULLDFSBNO); | 973 | ASSERT(be64_to_cpu(cblock->bb_leftsib) == NULLDFSBNO); |
990 | ASSERT(INT_GET(cblock->bb_rightsib, ARCH_CONVERT) == NULLDFSBNO); | 974 | ASSERT(be64_to_cpu(cblock->bb_rightsib) == NULLDFSBNO); |
991 | ip = cur->bc_private.b.ip; | 975 | ip = cur->bc_private.b.ip; |
992 | ifp = XFS_IFORK_PTR(ip, cur->bc_private.b.whichfork); | 976 | ifp = XFS_IFORK_PTR(ip, cur->bc_private.b.whichfork); |
993 | ASSERT(XFS_BMAP_BLOCK_IMAXRECS(level, cur) == | 977 | ASSERT(XFS_BMAP_BLOCK_IMAXRECS(level, cur) == |
994 | XFS_BMAP_BROOT_MAXRECS(ifp->if_broot_bytes)); | 978 | XFS_BMAP_BROOT_MAXRECS(ifp->if_broot_bytes)); |
995 | i = (int)(INT_GET(cblock->bb_numrecs, ARCH_CONVERT) - XFS_BMAP_BLOCK_IMAXRECS(level, cur)); | 979 | i = (int)(be16_to_cpu(cblock->bb_numrecs) - XFS_BMAP_BLOCK_IMAXRECS(level, cur)); |
996 | if (i) { | 980 | if (i) { |
997 | xfs_iroot_realloc(ip, i, cur->bc_private.b.whichfork); | 981 | xfs_iroot_realloc(ip, i, cur->bc_private.b.whichfork); |
998 | block = ifp->if_broot; | 982 | block = ifp->if_broot; |
999 | } | 983 | } |
1000 | INT_MOD(block->bb_numrecs, ARCH_CONVERT, i); | 984 | be16_add(&block->bb_numrecs, i); |
1001 | ASSERT(INT_GET(block->bb_numrecs, ARCH_CONVERT) == INT_GET(cblock->bb_numrecs, ARCH_CONVERT)); | 985 | ASSERT(block->bb_numrecs == cblock->bb_numrecs); |
1002 | kp = XFS_BMAP_KEY_IADDR(block, 1, cur); | 986 | kp = XFS_BMAP_KEY_IADDR(block, 1, cur); |
1003 | ckp = XFS_BMAP_KEY_IADDR(cblock, 1, cur); | 987 | ckp = XFS_BMAP_KEY_IADDR(cblock, 1, cur); |
1004 | memcpy(kp, ckp, INT_GET(block->bb_numrecs, ARCH_CONVERT) * sizeof(*kp)); | 988 | memcpy(kp, ckp, be16_to_cpu(block->bb_numrecs) * sizeof(*kp)); |
1005 | pp = XFS_BMAP_PTR_IADDR(block, 1, cur); | 989 | pp = XFS_BMAP_PTR_IADDR(block, 1, cur); |
1006 | cpp = XFS_BMAP_PTR_IADDR(cblock, 1, cur); | 990 | cpp = XFS_BMAP_PTR_IADDR(cblock, 1, cur); |
1007 | #ifdef DEBUG | 991 | #ifdef DEBUG |
1008 | for (i = 0; i < INT_GET(cblock->bb_numrecs, ARCH_CONVERT); i++) { | 992 | for (i = 0; i < be16_to_cpu(cblock->bb_numrecs); i++) { |
1009 | if ((error = xfs_btree_check_lptr(cur, INT_GET(cpp[i], ARCH_CONVERT), level - 1))) { | 993 | if ((error = xfs_btree_check_lptr(cur, INT_GET(cpp[i], ARCH_CONVERT), level - 1))) { |
1010 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 994 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
1011 | return error; | 995 | return error; |
1012 | } | 996 | } |
1013 | } | 997 | } |
1014 | #endif | 998 | #endif |
1015 | memcpy(pp, cpp, INT_GET(block->bb_numrecs, ARCH_CONVERT) * sizeof(*pp)); | 999 | memcpy(pp, cpp, be16_to_cpu(block->bb_numrecs) * sizeof(*pp)); |
1016 | xfs_bmap_add_free(XFS_DADDR_TO_FSB(cur->bc_mp, XFS_BUF_ADDR(cbp)), 1, | 1000 | xfs_bmap_add_free(XFS_DADDR_TO_FSB(cur->bc_mp, XFS_BUF_ADDR(cbp)), 1, |
1017 | cur->bc_private.b.flist, cur->bc_mp); | 1001 | cur->bc_private.b.flist, cur->bc_mp); |
1018 | ip->i_d.di_nblocks--; | 1002 | ip->i_d.di_nblocks--; |
@@ -1020,7 +1004,7 @@ xfs_bmbt_killroot( | |||
1020 | XFS_TRANS_DQ_BCOUNT, -1L); | 1004 | XFS_TRANS_DQ_BCOUNT, -1L); |
1021 | xfs_trans_binval(cur->bc_tp, cbp); | 1005 | xfs_trans_binval(cur->bc_tp, cbp); |
1022 | cur->bc_bufs[level - 1] = NULL; | 1006 | cur->bc_bufs[level - 1] = NULL; |
1023 | INT_MOD(block->bb_level, ARCH_CONVERT, -1); | 1007 | be16_add(&block->bb_level, -1); |
1024 | xfs_trans_log_inode(cur->bc_tp, ip, | 1008 | xfs_trans_log_inode(cur->bc_tp, ip, |
1025 | XFS_ILOG_CORE | XFS_ILOG_FBROOT(cur->bc_private.b.whichfork)); | 1009 | XFS_ILOG_CORE | XFS_ILOG_FBROOT(cur->bc_private.b.whichfork)); |
1026 | cur->bc_nlevels--; | 1010 | cur->bc_nlevels--; |
@@ -1176,7 +1160,7 @@ xfs_bmbt_lookup( | |||
1176 | else | 1160 | else |
1177 | krbase = XFS_BMAP_REC_IADDR(block, 1, cur); | 1161 | krbase = XFS_BMAP_REC_IADDR(block, 1, cur); |
1178 | low = 1; | 1162 | low = 1; |
1179 | if (!(high = INT_GET(block->bb_numrecs, ARCH_CONVERT))) { | 1163 | if (!(high = be16_to_cpu(block->bb_numrecs))) { |
1180 | ASSERT(level == 0); | 1164 | ASSERT(level == 0); |
1181 | cur->bc_ptrs[0] = dir != XFS_LOOKUP_LE; | 1165 | cur->bc_ptrs[0] = dir != XFS_LOOKUP_LE; |
1182 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); | 1166 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); |
@@ -1223,8 +1207,8 @@ xfs_bmbt_lookup( | |||
1223 | * If ge search and we went off the end of the block, but it's | 1207 | * If ge search and we went off the end of the block, but it's |
1224 | * not the last block, we're in the wrong block. | 1208 | * not the last block, we're in the wrong block. |
1225 | */ | 1209 | */ |
1226 | if (dir == XFS_LOOKUP_GE && keyno > INT_GET(block->bb_numrecs, ARCH_CONVERT) && | 1210 | if (dir == XFS_LOOKUP_GE && keyno > be16_to_cpu(block->bb_numrecs) && |
1227 | INT_GET(block->bb_rightsib, ARCH_CONVERT) != NULLDFSBNO) { | 1211 | be64_to_cpu(block->bb_rightsib) != NULLDFSBNO) { |
1228 | cur->bc_ptrs[0] = keyno; | 1212 | cur->bc_ptrs[0] = keyno; |
1229 | if ((error = xfs_bmbt_increment(cur, 0, &i))) { | 1213 | if ((error = xfs_bmbt_increment(cur, 0, &i))) { |
1230 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 1214 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
@@ -1239,7 +1223,7 @@ xfs_bmbt_lookup( | |||
1239 | else if (dir == XFS_LOOKUP_LE && diff > 0) | 1223 | else if (dir == XFS_LOOKUP_LE && diff > 0) |
1240 | keyno--; | 1224 | keyno--; |
1241 | cur->bc_ptrs[0] = keyno; | 1225 | cur->bc_ptrs[0] = keyno; |
1242 | if (keyno == 0 || keyno > INT_GET(block->bb_numrecs, ARCH_CONVERT)) { | 1226 | if (keyno == 0 || keyno > be16_to_cpu(block->bb_numrecs)) { |
1243 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); | 1227 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); |
1244 | *stat = 0; | 1228 | *stat = 0; |
1245 | } else { | 1229 | } else { |
@@ -1296,7 +1280,7 @@ xfs_bmbt_lshift( | |||
1296 | return error; | 1280 | return error; |
1297 | } | 1281 | } |
1298 | #endif | 1282 | #endif |
1299 | if (INT_GET(right->bb_leftsib, ARCH_CONVERT) == NULLDFSBNO) { | 1283 | if (be64_to_cpu(right->bb_leftsib) == NULLDFSBNO) { |
1300 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); | 1284 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); |
1301 | *stat = 0; | 1285 | *stat = 0; |
1302 | return 0; | 1286 | return 0; |
@@ -1307,7 +1291,7 @@ xfs_bmbt_lshift( | |||
1307 | return 0; | 1291 | return 0; |
1308 | } | 1292 | } |
1309 | mp = cur->bc_mp; | 1293 | mp = cur->bc_mp; |
1310 | if ((error = xfs_btree_read_bufl(mp, cur->bc_tp, INT_GET(right->bb_leftsib, ARCH_CONVERT), 0, | 1294 | if ((error = xfs_btree_read_bufl(mp, cur->bc_tp, be64_to_cpu(right->bb_leftsib), 0, |
1311 | &lbp, XFS_BMAP_BTREE_REF))) { | 1295 | &lbp, XFS_BMAP_BTREE_REF))) { |
1312 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 1296 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
1313 | return error; | 1297 | return error; |
@@ -1317,12 +1301,12 @@ xfs_bmbt_lshift( | |||
1317 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 1301 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
1318 | return error; | 1302 | return error; |
1319 | } | 1303 | } |
1320 | if (INT_GET(left->bb_numrecs, ARCH_CONVERT) == XFS_BMAP_BLOCK_IMAXRECS(level, cur)) { | 1304 | if (be16_to_cpu(left->bb_numrecs) == XFS_BMAP_BLOCK_IMAXRECS(level, cur)) { |
1321 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); | 1305 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); |
1322 | *stat = 0; | 1306 | *stat = 0; |
1323 | return 0; | 1307 | return 0; |
1324 | } | 1308 | } |
1325 | lrecs = INT_GET(left->bb_numrecs, ARCH_CONVERT) + 1; | 1309 | lrecs = be16_to_cpu(left->bb_numrecs) + 1; |
1326 | if (level > 0) { | 1310 | if (level > 0) { |
1327 | lkp = XFS_BMAP_KEY_IADDR(left, lrecs, cur); | 1311 | lkp = XFS_BMAP_KEY_IADDR(left, lrecs, cur); |
1328 | rkp = XFS_BMAP_KEY_IADDR(right, 1, cur); | 1312 | rkp = XFS_BMAP_KEY_IADDR(right, 1, cur); |
@@ -1344,7 +1328,7 @@ xfs_bmbt_lshift( | |||
1344 | *lrp = *rrp; | 1328 | *lrp = *rrp; |
1345 | xfs_bmbt_log_recs(cur, lbp, lrecs, lrecs); | 1329 | xfs_bmbt_log_recs(cur, lbp, lrecs, lrecs); |
1346 | } | 1330 | } |
1347 | INT_SET(left->bb_numrecs, ARCH_CONVERT, lrecs); | 1331 | left->bb_numrecs = cpu_to_be16(lrecs); |
1348 | xfs_bmbt_log_block(cur, lbp, XFS_BB_NUMRECS); | 1332 | xfs_bmbt_log_block(cur, lbp, XFS_BB_NUMRECS); |
1349 | #ifdef DEBUG | 1333 | #ifdef DEBUG |
1350 | if (level > 0) | 1334 | if (level > 0) |
@@ -1352,8 +1336,8 @@ xfs_bmbt_lshift( | |||
1352 | else | 1336 | else |
1353 | xfs_btree_check_rec(XFS_BTNUM_BMAP, lrp - 1, lrp); | 1337 | xfs_btree_check_rec(XFS_BTNUM_BMAP, lrp - 1, lrp); |
1354 | #endif | 1338 | #endif |
1355 | rrecs = INT_GET(right->bb_numrecs, ARCH_CONVERT) - 1; | 1339 | rrecs = be16_to_cpu(right->bb_numrecs) - 1; |
1356 | INT_SET(right->bb_numrecs, ARCH_CONVERT, rrecs); | 1340 | right->bb_numrecs = cpu_to_be16(rrecs); |
1357 | xfs_bmbt_log_block(cur, rbp, XFS_BB_NUMRECS); | 1341 | xfs_bmbt_log_block(cur, rbp, XFS_BB_NUMRECS); |
1358 | if (level > 0) { | 1342 | if (level > 0) { |
1359 | #ifdef DEBUG | 1343 | #ifdef DEBUG |
@@ -1430,18 +1414,18 @@ xfs_bmbt_rshift( | |||
1430 | return error; | 1414 | return error; |
1431 | } | 1415 | } |
1432 | #endif | 1416 | #endif |
1433 | if (INT_GET(left->bb_rightsib, ARCH_CONVERT) == NULLDFSBNO) { | 1417 | if (be64_to_cpu(left->bb_rightsib) == NULLDFSBNO) { |
1434 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); | 1418 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); |
1435 | *stat = 0; | 1419 | *stat = 0; |
1436 | return 0; | 1420 | return 0; |
1437 | } | 1421 | } |
1438 | if (cur->bc_ptrs[level] >= INT_GET(left->bb_numrecs, ARCH_CONVERT)) { | 1422 | if (cur->bc_ptrs[level] >= be16_to_cpu(left->bb_numrecs)) { |
1439 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); | 1423 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); |
1440 | *stat = 0; | 1424 | *stat = 0; |
1441 | return 0; | 1425 | return 0; |
1442 | } | 1426 | } |
1443 | mp = cur->bc_mp; | 1427 | mp = cur->bc_mp; |
1444 | if ((error = xfs_btree_read_bufl(mp, cur->bc_tp, INT_GET(left->bb_rightsib, ARCH_CONVERT), 0, | 1428 | if ((error = xfs_btree_read_bufl(mp, cur->bc_tp, be64_to_cpu(left->bb_rightsib), 0, |
1445 | &rbp, XFS_BMAP_BTREE_REF))) { | 1429 | &rbp, XFS_BMAP_BTREE_REF))) { |
1446 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 1430 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
1447 | return error; | 1431 | return error; |
@@ -1451,26 +1435,26 @@ xfs_bmbt_rshift( | |||
1451 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 1435 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
1452 | return error; | 1436 | return error; |
1453 | } | 1437 | } |
1454 | if (INT_GET(right->bb_numrecs, ARCH_CONVERT) == XFS_BMAP_BLOCK_IMAXRECS(level, cur)) { | 1438 | if (be16_to_cpu(right->bb_numrecs) == XFS_BMAP_BLOCK_IMAXRECS(level, cur)) { |
1455 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); | 1439 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); |
1456 | *stat = 0; | 1440 | *stat = 0; |
1457 | return 0; | 1441 | return 0; |
1458 | } | 1442 | } |
1459 | if (level > 0) { | 1443 | if (level > 0) { |
1460 | lkp = XFS_BMAP_KEY_IADDR(left, INT_GET(left->bb_numrecs, ARCH_CONVERT), cur); | 1444 | lkp = XFS_BMAP_KEY_IADDR(left, be16_to_cpu(left->bb_numrecs), cur); |
1461 | lpp = XFS_BMAP_PTR_IADDR(left, INT_GET(left->bb_numrecs, ARCH_CONVERT), cur); | 1445 | lpp = XFS_BMAP_PTR_IADDR(left, be16_to_cpu(left->bb_numrecs), cur); |
1462 | rkp = XFS_BMAP_KEY_IADDR(right, 1, cur); | 1446 | rkp = XFS_BMAP_KEY_IADDR(right, 1, cur); |
1463 | rpp = XFS_BMAP_PTR_IADDR(right, 1, cur); | 1447 | rpp = XFS_BMAP_PTR_IADDR(right, 1, cur); |
1464 | #ifdef DEBUG | 1448 | #ifdef DEBUG |
1465 | for (i = INT_GET(right->bb_numrecs, ARCH_CONVERT) - 1; i >= 0; i--) { | 1449 | for (i = be16_to_cpu(right->bb_numrecs) - 1; i >= 0; i--) { |
1466 | if ((error = xfs_btree_check_lptr(cur, INT_GET(rpp[i], ARCH_CONVERT), level))) { | 1450 | if ((error = xfs_btree_check_lptr(cur, INT_GET(rpp[i], ARCH_CONVERT), level))) { |
1467 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 1451 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
1468 | return error; | 1452 | return error; |
1469 | } | 1453 | } |
1470 | } | 1454 | } |
1471 | #endif | 1455 | #endif |
1472 | memmove(rkp + 1, rkp, INT_GET(right->bb_numrecs, ARCH_CONVERT) * sizeof(*rkp)); | 1456 | memmove(rkp + 1, rkp, be16_to_cpu(right->bb_numrecs) * sizeof(*rkp)); |
1473 | memmove(rpp + 1, rpp, INT_GET(right->bb_numrecs, ARCH_CONVERT) * sizeof(*rpp)); | 1457 | memmove(rpp + 1, rpp, be16_to_cpu(right->bb_numrecs) * sizeof(*rpp)); |
1474 | #ifdef DEBUG | 1458 | #ifdef DEBUG |
1475 | if ((error = xfs_btree_check_lptr(cur, INT_GET(*lpp, ARCH_CONVERT), level))) { | 1459 | if ((error = xfs_btree_check_lptr(cur, INT_GET(*lpp, ARCH_CONVERT), level))) { |
1476 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 1460 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
@@ -1479,21 +1463,21 @@ xfs_bmbt_rshift( | |||
1479 | #endif | 1463 | #endif |
1480 | *rkp = *lkp; | 1464 | *rkp = *lkp; |
1481 | *rpp = *lpp; /* INT_: direct copy */ | 1465 | *rpp = *lpp; /* INT_: direct copy */ |
1482 | xfs_bmbt_log_keys(cur, rbp, 1, INT_GET(right->bb_numrecs, ARCH_CONVERT) + 1); | 1466 | xfs_bmbt_log_keys(cur, rbp, 1, be16_to_cpu(right->bb_numrecs) + 1); |
1483 | xfs_bmbt_log_ptrs(cur, rbp, 1, INT_GET(right->bb_numrecs, ARCH_CONVERT) + 1); | 1467 | xfs_bmbt_log_ptrs(cur, rbp, 1, be16_to_cpu(right->bb_numrecs) + 1); |
1484 | } else { | 1468 | } else { |
1485 | lrp = XFS_BMAP_REC_IADDR(left, INT_GET(left->bb_numrecs, ARCH_CONVERT), cur); | 1469 | lrp = XFS_BMAP_REC_IADDR(left, be16_to_cpu(left->bb_numrecs), cur); |
1486 | rrp = XFS_BMAP_REC_IADDR(right, 1, cur); | 1470 | rrp = XFS_BMAP_REC_IADDR(right, 1, cur); |
1487 | memmove(rrp + 1, rrp, INT_GET(right->bb_numrecs, ARCH_CONVERT) * sizeof(*rrp)); | 1471 | memmove(rrp + 1, rrp, be16_to_cpu(right->bb_numrecs) * sizeof(*rrp)); |
1488 | *rrp = *lrp; | 1472 | *rrp = *lrp; |
1489 | xfs_bmbt_log_recs(cur, rbp, 1, INT_GET(right->bb_numrecs, ARCH_CONVERT) + 1); | 1473 | xfs_bmbt_log_recs(cur, rbp, 1, be16_to_cpu(right->bb_numrecs) + 1); |
1490 | INT_SET(key.br_startoff, ARCH_CONVERT, | 1474 | INT_SET(key.br_startoff, ARCH_CONVERT, |
1491 | xfs_bmbt_disk_get_startoff(rrp)); | 1475 | xfs_bmbt_disk_get_startoff(rrp)); |
1492 | rkp = &key; | 1476 | rkp = &key; |
1493 | } | 1477 | } |
1494 | INT_MOD(left->bb_numrecs, ARCH_CONVERT, -1); | 1478 | be16_add(&left->bb_numrecs, -1); |
1495 | xfs_bmbt_log_block(cur, lbp, XFS_BB_NUMRECS); | 1479 | xfs_bmbt_log_block(cur, lbp, XFS_BB_NUMRECS); |
1496 | INT_MOD(right->bb_numrecs, ARCH_CONVERT, +1); | 1480 | be16_add(&right->bb_numrecs, 1); |
1497 | #ifdef DEBUG | 1481 | #ifdef DEBUG |
1498 | if (level > 0) | 1482 | if (level > 0) |
1499 | xfs_btree_check_key(XFS_BTNUM_BMAP, rkp, rkp + 1); | 1483 | xfs_btree_check_key(XFS_BTNUM_BMAP, rkp, rkp + 1); |
@@ -1624,47 +1608,47 @@ xfs_bmbt_split( | |||
1624 | return error; | 1608 | return error; |
1625 | } | 1609 | } |
1626 | #endif | 1610 | #endif |
1627 | INT_SET(right->bb_magic, ARCH_CONVERT, XFS_BMAP_MAGIC); | 1611 | right->bb_magic = cpu_to_be32(XFS_BMAP_MAGIC); |
1628 | right->bb_level = left->bb_level; /* INT_: direct copy */ | 1612 | right->bb_level = left->bb_level; |
1629 | INT_SET(right->bb_numrecs, ARCH_CONVERT, (__uint16_t)(INT_GET(left->bb_numrecs, ARCH_CONVERT) / 2)); | 1613 | right->bb_numrecs = cpu_to_be16(be16_to_cpu(left->bb_numrecs) / 2); |
1630 | if ((INT_GET(left->bb_numrecs, ARCH_CONVERT) & 1) && | 1614 | if ((be16_to_cpu(left->bb_numrecs) & 1) && |
1631 | cur->bc_ptrs[level] <= INT_GET(right->bb_numrecs, ARCH_CONVERT) + 1) | 1615 | cur->bc_ptrs[level] <= be16_to_cpu(right->bb_numrecs) + 1) |
1632 | INT_MOD(right->bb_numrecs, ARCH_CONVERT, +1); | 1616 | be16_add(&right->bb_numrecs, 1); |
1633 | i = INT_GET(left->bb_numrecs, ARCH_CONVERT) - INT_GET(right->bb_numrecs, ARCH_CONVERT) + 1; | 1617 | i = be16_to_cpu(left->bb_numrecs) - be16_to_cpu(right->bb_numrecs) + 1; |
1634 | if (level > 0) { | 1618 | if (level > 0) { |
1635 | lkp = XFS_BMAP_KEY_IADDR(left, i, cur); | 1619 | lkp = XFS_BMAP_KEY_IADDR(left, i, cur); |
1636 | lpp = XFS_BMAP_PTR_IADDR(left, i, cur); | 1620 | lpp = XFS_BMAP_PTR_IADDR(left, i, cur); |
1637 | rkp = XFS_BMAP_KEY_IADDR(right, 1, cur); | 1621 | rkp = XFS_BMAP_KEY_IADDR(right, 1, cur); |
1638 | rpp = XFS_BMAP_PTR_IADDR(right, 1, cur); | 1622 | rpp = XFS_BMAP_PTR_IADDR(right, 1, cur); |
1639 | #ifdef DEBUG | 1623 | #ifdef DEBUG |
1640 | for (i = 0; i < INT_GET(right->bb_numrecs, ARCH_CONVERT); i++) { | 1624 | for (i = 0; i < be16_to_cpu(right->bb_numrecs); i++) { |
1641 | if ((error = xfs_btree_check_lptr(cur, INT_GET(lpp[i], ARCH_CONVERT), level))) { | 1625 | if ((error = xfs_btree_check_lptr(cur, INT_GET(lpp[i], ARCH_CONVERT), level))) { |
1642 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 1626 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
1643 | return error; | 1627 | return error; |
1644 | } | 1628 | } |
1645 | } | 1629 | } |
1646 | #endif | 1630 | #endif |
1647 | memcpy(rkp, lkp, INT_GET(right->bb_numrecs, ARCH_CONVERT) * sizeof(*rkp)); | 1631 | memcpy(rkp, lkp, be16_to_cpu(right->bb_numrecs) * sizeof(*rkp)); |
1648 | memcpy(rpp, lpp, INT_GET(right->bb_numrecs, ARCH_CONVERT) * sizeof(*rpp)); | 1632 | memcpy(rpp, lpp, be16_to_cpu(right->bb_numrecs) * sizeof(*rpp)); |
1649 | xfs_bmbt_log_keys(cur, rbp, 1, INT_GET(right->bb_numrecs, ARCH_CONVERT)); | 1633 | xfs_bmbt_log_keys(cur, rbp, 1, be16_to_cpu(right->bb_numrecs)); |
1650 | xfs_bmbt_log_ptrs(cur, rbp, 1, INT_GET(right->bb_numrecs, ARCH_CONVERT)); | 1634 | xfs_bmbt_log_ptrs(cur, rbp, 1, be16_to_cpu(right->bb_numrecs)); |
1651 | keyp->br_startoff = INT_GET(rkp->br_startoff, ARCH_CONVERT); | 1635 | keyp->br_startoff = INT_GET(rkp->br_startoff, ARCH_CONVERT); |
1652 | } else { | 1636 | } else { |
1653 | lrp = XFS_BMAP_REC_IADDR(left, i, cur); | 1637 | lrp = XFS_BMAP_REC_IADDR(left, i, cur); |
1654 | rrp = XFS_BMAP_REC_IADDR(right, 1, cur); | 1638 | rrp = XFS_BMAP_REC_IADDR(right, 1, cur); |
1655 | memcpy(rrp, lrp, INT_GET(right->bb_numrecs, ARCH_CONVERT) * sizeof(*rrp)); | 1639 | memcpy(rrp, lrp, be16_to_cpu(right->bb_numrecs) * sizeof(*rrp)); |
1656 | xfs_bmbt_log_recs(cur, rbp, 1, INT_GET(right->bb_numrecs, ARCH_CONVERT)); | 1640 | xfs_bmbt_log_recs(cur, rbp, 1, be16_to_cpu(right->bb_numrecs)); |
1657 | keyp->br_startoff = xfs_bmbt_disk_get_startoff(rrp); | 1641 | keyp->br_startoff = xfs_bmbt_disk_get_startoff(rrp); |
1658 | } | 1642 | } |
1659 | INT_MOD(left->bb_numrecs, ARCH_CONVERT, -(INT_GET(right->bb_numrecs, ARCH_CONVERT))); | 1643 | be16_add(&left->bb_numrecs, -(be16_to_cpu(right->bb_numrecs))); |
1660 | right->bb_rightsib = left->bb_rightsib; /* INT_: direct copy */ | 1644 | right->bb_rightsib = left->bb_rightsib; |
1661 | INT_SET(left->bb_rightsib, ARCH_CONVERT, args.fsbno); | 1645 | left->bb_rightsib = cpu_to_be64(args.fsbno); |
1662 | INT_SET(right->bb_leftsib, ARCH_CONVERT, lbno); | 1646 | right->bb_leftsib = cpu_to_be64(lbno); |
1663 | xfs_bmbt_log_block(cur, rbp, XFS_BB_ALL_BITS); | 1647 | xfs_bmbt_log_block(cur, rbp, XFS_BB_ALL_BITS); |
1664 | xfs_bmbt_log_block(cur, lbp, XFS_BB_NUMRECS | XFS_BB_RIGHTSIB); | 1648 | xfs_bmbt_log_block(cur, lbp, XFS_BB_NUMRECS | XFS_BB_RIGHTSIB); |
1665 | if (INT_GET(right->bb_rightsib, ARCH_CONVERT) != NULLDFSBNO) { | 1649 | if (be64_to_cpu(right->bb_rightsib) != NULLDFSBNO) { |
1666 | if ((error = xfs_btree_read_bufl(args.mp, args.tp, | 1650 | if ((error = xfs_btree_read_bufl(args.mp, args.tp, |
1667 | INT_GET(right->bb_rightsib, ARCH_CONVERT), 0, &rrbp, | 1651 | be64_to_cpu(right->bb_rightsib), 0, &rrbp, |
1668 | XFS_BMAP_BTREE_REF))) { | 1652 | XFS_BMAP_BTREE_REF))) { |
1669 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 1653 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
1670 | return error; | 1654 | return error; |
@@ -1674,12 +1658,12 @@ xfs_bmbt_split( | |||
1674 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 1658 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
1675 | return error; | 1659 | return error; |
1676 | } | 1660 | } |
1677 | INT_SET(rrblock->bb_leftsib, ARCH_CONVERT, args.fsbno); | 1661 | rrblock->bb_leftsib = cpu_to_be64(args.fsbno); |
1678 | xfs_bmbt_log_block(cur, rrbp, XFS_BB_LEFTSIB); | 1662 | xfs_bmbt_log_block(cur, rrbp, XFS_BB_LEFTSIB); |
1679 | } | 1663 | } |
1680 | if (cur->bc_ptrs[level] > INT_GET(left->bb_numrecs, ARCH_CONVERT) + 1) { | 1664 | if (cur->bc_ptrs[level] > be16_to_cpu(left->bb_numrecs) + 1) { |
1681 | xfs_btree_setbuf(cur, level, rbp); | 1665 | xfs_btree_setbuf(cur, level, rbp); |
1682 | cur->bc_ptrs[level] -= INT_GET(left->bb_numrecs, ARCH_CONVERT); | 1666 | cur->bc_ptrs[level] -= be16_to_cpu(left->bb_numrecs); |
1683 | } | 1667 | } |
1684 | if (level + 1 < cur->bc_nlevels) { | 1668 | if (level + 1 < cur->bc_nlevels) { |
1685 | if ((error = xfs_btree_dup_cursor(cur, curp))) { | 1669 | if ((error = xfs_btree_dup_cursor(cur, curp))) { |
@@ -1751,18 +1735,18 @@ xfs_bmdr_to_bmbt( | |||
1751 | xfs_bmbt_key_t *tkp; | 1735 | xfs_bmbt_key_t *tkp; |
1752 | xfs_bmbt_ptr_t *tpp; | 1736 | xfs_bmbt_ptr_t *tpp; |
1753 | 1737 | ||
1754 | INT_SET(rblock->bb_magic, ARCH_CONVERT, XFS_BMAP_MAGIC); | 1738 | rblock->bb_magic = cpu_to_be32(XFS_BMAP_MAGIC); |
1755 | rblock->bb_level = dblock->bb_level; /* both in on-disk format */ | 1739 | rblock->bb_level = dblock->bb_level; |
1756 | ASSERT(INT_GET(rblock->bb_level, ARCH_CONVERT) > 0); | 1740 | ASSERT(be16_to_cpu(rblock->bb_level) > 0); |
1757 | rblock->bb_numrecs = dblock->bb_numrecs;/* both in on-disk format */ | 1741 | rblock->bb_numrecs = dblock->bb_numrecs; |
1758 | INT_SET(rblock->bb_leftsib, ARCH_CONVERT, NULLDFSBNO); | 1742 | rblock->bb_leftsib = cpu_to_be64(NULLDFSBNO); |
1759 | INT_SET(rblock->bb_rightsib, ARCH_CONVERT, NULLDFSBNO); | 1743 | rblock->bb_rightsib = cpu_to_be64(NULLDFSBNO); |
1760 | dmxr = (int)XFS_BTREE_BLOCK_MAXRECS(dblocklen, xfs_bmdr, 0); | 1744 | dmxr = (int)XFS_BTREE_BLOCK_MAXRECS(dblocklen, xfs_bmdr, 0); |
1761 | fkp = XFS_BTREE_KEY_ADDR(dblocklen, xfs_bmdr, dblock, 1, dmxr); | 1745 | fkp = XFS_BTREE_KEY_ADDR(dblocklen, xfs_bmdr, dblock, 1, dmxr); |
1762 | tkp = XFS_BMAP_BROOT_KEY_ADDR(rblock, 1, rblocklen); | 1746 | tkp = XFS_BMAP_BROOT_KEY_ADDR(rblock, 1, rblocklen); |
1763 | fpp = XFS_BTREE_PTR_ADDR(dblocklen, xfs_bmdr, dblock, 1, dmxr); | 1747 | fpp = XFS_BTREE_PTR_ADDR(dblocklen, xfs_bmdr, dblock, 1, dmxr); |
1764 | tpp = XFS_BMAP_BROOT_PTR_ADDR(rblock, 1, rblocklen); | 1748 | tpp = XFS_BMAP_BROOT_PTR_ADDR(rblock, 1, rblocklen); |
1765 | dmxr = INT_GET(dblock->bb_numrecs, ARCH_CONVERT); | 1749 | dmxr = be16_to_cpu(dblock->bb_numrecs); |
1766 | memcpy(tkp, fkp, sizeof(*fkp) * dmxr); | 1750 | memcpy(tkp, fkp, sizeof(*fkp) * dmxr); |
1767 | memcpy(tpp, fpp, sizeof(*fpp) * dmxr); /* INT_: direct copy */ | 1751 | memcpy(tpp, fpp, sizeof(*fpp) * dmxr); /* INT_: direct copy */ |
1768 | } | 1752 | } |
@@ -1805,7 +1789,7 @@ xfs_bmbt_decrement( | |||
1805 | return error; | 1789 | return error; |
1806 | } | 1790 | } |
1807 | #endif | 1791 | #endif |
1808 | if (INT_GET(block->bb_leftsib, ARCH_CONVERT) == NULLDFSBNO) { | 1792 | if (be64_to_cpu(block->bb_leftsib) == NULLDFSBNO) { |
1809 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); | 1793 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); |
1810 | *stat = 0; | 1794 | *stat = 0; |
1811 | return 0; | 1795 | return 0; |
@@ -1837,7 +1821,7 @@ xfs_bmbt_decrement( | |||
1837 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 1821 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
1838 | return error; | 1822 | return error; |
1839 | } | 1823 | } |
1840 | cur->bc_ptrs[lev] = INT_GET(block->bb_numrecs, ARCH_CONVERT); | 1824 | cur->bc_ptrs[lev] = be16_to_cpu(block->bb_numrecs); |
1841 | } | 1825 | } |
1842 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); | 1826 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); |
1843 | *stat = 1; | 1827 | *stat = 1; |
@@ -2123,12 +2107,12 @@ xfs_bmbt_increment( | |||
2123 | return error; | 2107 | return error; |
2124 | } | 2108 | } |
2125 | #endif | 2109 | #endif |
2126 | if (++cur->bc_ptrs[level] <= INT_GET(block->bb_numrecs, ARCH_CONVERT)) { | 2110 | if (++cur->bc_ptrs[level] <= be16_to_cpu(block->bb_numrecs)) { |
2127 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); | 2111 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); |
2128 | *stat = 1; | 2112 | *stat = 1; |
2129 | return 0; | 2113 | return 0; |
2130 | } | 2114 | } |
2131 | if (INT_GET(block->bb_rightsib, ARCH_CONVERT) == NULLDFSBNO) { | 2115 | if (be64_to_cpu(block->bb_rightsib) == NULLDFSBNO) { |
2132 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); | 2116 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); |
2133 | *stat = 0; | 2117 | *stat = 0; |
2134 | return 0; | 2118 | return 0; |
@@ -2141,7 +2125,7 @@ xfs_bmbt_increment( | |||
2141 | return error; | 2125 | return error; |
2142 | } | 2126 | } |
2143 | #endif | 2127 | #endif |
2144 | if (++cur->bc_ptrs[lev] <= INT_GET(block->bb_numrecs, ARCH_CONVERT)) | 2128 | if (++cur->bc_ptrs[lev] <= be16_to_cpu(block->bb_numrecs)) |
2145 | break; | 2129 | break; |
2146 | if (lev < cur->bc_nlevels - 1) | 2130 | if (lev < cur->bc_nlevels - 1) |
2147 | xfs_btree_readahead(cur, lev, XFS_BTCUR_RIGHTRA); | 2131 | xfs_btree_readahead(cur, lev, XFS_BTCUR_RIGHTRA); |
@@ -2403,23 +2387,23 @@ xfs_bmbt_newroot( | |||
2403 | bp = xfs_btree_get_bufl(args.mp, cur->bc_tp, args.fsbno, 0); | 2387 | bp = xfs_btree_get_bufl(args.mp, cur->bc_tp, args.fsbno, 0); |
2404 | cblock = XFS_BUF_TO_BMBT_BLOCK(bp); | 2388 | cblock = XFS_BUF_TO_BMBT_BLOCK(bp); |
2405 | *cblock = *block; | 2389 | *cblock = *block; |
2406 | INT_MOD(block->bb_level, ARCH_CONVERT, +1); | 2390 | be16_add(&block->bb_level, 1); |
2407 | INT_SET(block->bb_numrecs, ARCH_CONVERT, 1); | 2391 | block->bb_numrecs = cpu_to_be16(1); |
2408 | cur->bc_nlevels++; | 2392 | cur->bc_nlevels++; |
2409 | cur->bc_ptrs[level + 1] = 1; | 2393 | cur->bc_ptrs[level + 1] = 1; |
2410 | kp = XFS_BMAP_KEY_IADDR(block, 1, cur); | 2394 | kp = XFS_BMAP_KEY_IADDR(block, 1, cur); |
2411 | ckp = XFS_BMAP_KEY_IADDR(cblock, 1, cur); | 2395 | ckp = XFS_BMAP_KEY_IADDR(cblock, 1, cur); |
2412 | memcpy(ckp, kp, INT_GET(cblock->bb_numrecs, ARCH_CONVERT) * sizeof(*kp)); | 2396 | memcpy(ckp, kp, be16_to_cpu(cblock->bb_numrecs) * sizeof(*kp)); |
2413 | cpp = XFS_BMAP_PTR_IADDR(cblock, 1, cur); | 2397 | cpp = XFS_BMAP_PTR_IADDR(cblock, 1, cur); |
2414 | #ifdef DEBUG | 2398 | #ifdef DEBUG |
2415 | for (i = 0; i < INT_GET(cblock->bb_numrecs, ARCH_CONVERT); i++) { | 2399 | for (i = 0; i < be16_to_cpu(cblock->bb_numrecs); i++) { |
2416 | if ((error = xfs_btree_check_lptr(cur, INT_GET(pp[i], ARCH_CONVERT), level))) { | 2400 | if ((error = xfs_btree_check_lptr(cur, INT_GET(pp[i], ARCH_CONVERT), level))) { |
2417 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); | 2401 | XFS_BMBT_TRACE_CURSOR(cur, ERROR); |
2418 | return error; | 2402 | return error; |
2419 | } | 2403 | } |
2420 | } | 2404 | } |
2421 | #endif | 2405 | #endif |
2422 | memcpy(cpp, pp, INT_GET(cblock->bb_numrecs, ARCH_CONVERT) * sizeof(*pp)); | 2406 | memcpy(cpp, pp, be16_to_cpu(cblock->bb_numrecs) * sizeof(*pp)); |
2423 | #ifdef DEBUG | 2407 | #ifdef DEBUG |
2424 | if ((error = xfs_btree_check_lptr(cur, (xfs_bmbt_ptr_t)args.fsbno, | 2408 | if ((error = xfs_btree_check_lptr(cur, (xfs_bmbt_ptr_t)args.fsbno, |
2425 | level))) { | 2409 | level))) { |
@@ -2428,7 +2412,7 @@ xfs_bmbt_newroot( | |||
2428 | } | 2412 | } |
2429 | #endif | 2413 | #endif |
2430 | INT_SET(*pp, ARCH_CONVERT, args.fsbno); | 2414 | INT_SET(*pp, ARCH_CONVERT, args.fsbno); |
2431 | xfs_iroot_realloc(cur->bc_private.b.ip, 1 - INT_GET(cblock->bb_numrecs, ARCH_CONVERT), | 2415 | xfs_iroot_realloc(cur->bc_private.b.ip, 1 - be16_to_cpu(cblock->bb_numrecs), |
2432 | cur->bc_private.b.whichfork); | 2416 | cur->bc_private.b.whichfork); |
2433 | xfs_btree_setbuf(cur, level, bp); | 2417 | xfs_btree_setbuf(cur, level, bp); |
2434 | /* | 2418 | /* |
@@ -2436,8 +2420,8 @@ xfs_bmbt_newroot( | |||
2436 | * the root is at the right level. | 2420 | * the root is at the right level. |
2437 | */ | 2421 | */ |
2438 | xfs_bmbt_log_block(cur, bp, XFS_BB_ALL_BITS); | 2422 | xfs_bmbt_log_block(cur, bp, XFS_BB_ALL_BITS); |
2439 | xfs_bmbt_log_keys(cur, bp, 1, INT_GET(cblock->bb_numrecs, ARCH_CONVERT)); | 2423 | xfs_bmbt_log_keys(cur, bp, 1, be16_to_cpu(cblock->bb_numrecs)); |
2440 | xfs_bmbt_log_ptrs(cur, bp, 1, INT_GET(cblock->bb_numrecs, ARCH_CONVERT)); | 2424 | xfs_bmbt_log_ptrs(cur, bp, 1, be16_to_cpu(cblock->bb_numrecs)); |
2441 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); | 2425 | XFS_BMBT_TRACE_CURSOR(cur, EXIT); |
2442 | *logflags |= | 2426 | *logflags |= |
2443 | XFS_ILOG_CORE | XFS_ILOG_FBROOT(cur->bc_private.b.whichfork); | 2427 | XFS_ILOG_CORE | XFS_ILOG_FBROOT(cur->bc_private.b.whichfork); |
@@ -2705,18 +2689,18 @@ xfs_bmbt_to_bmdr( | |||
2705 | xfs_bmbt_key_t *tkp; | 2689 | xfs_bmbt_key_t *tkp; |
2706 | xfs_bmbt_ptr_t *tpp; | 2690 | xfs_bmbt_ptr_t *tpp; |
2707 | 2691 | ||
2708 | ASSERT(INT_GET(rblock->bb_magic, ARCH_CONVERT) == XFS_BMAP_MAGIC); | 2692 | ASSERT(be32_to_cpu(rblock->bb_magic) == XFS_BMAP_MAGIC); |
2709 | ASSERT(INT_GET(rblock->bb_leftsib, ARCH_CONVERT) == NULLDFSBNO); | 2693 | ASSERT(be64_to_cpu(rblock->bb_leftsib) == NULLDFSBNO); |
2710 | ASSERT(INT_GET(rblock->bb_rightsib, ARCH_CONVERT) == NULLDFSBNO); | 2694 | ASSERT(be64_to_cpu(rblock->bb_rightsib) == NULLDFSBNO); |
2711 | ASSERT(INT_GET(rblock->bb_level, ARCH_CONVERT) > 0); | 2695 | ASSERT(be16_to_cpu(rblock->bb_level) > 0); |
2712 | dblock->bb_level = rblock->bb_level; /* both in on-disk format */ | 2696 | dblock->bb_level = rblock->bb_level; |
2713 | dblock->bb_numrecs = rblock->bb_numrecs;/* both in on-disk format */ | 2697 | dblock->bb_numrecs = rblock->bb_numrecs; |
2714 | dmxr = (int)XFS_BTREE_BLOCK_MAXRECS(dblocklen, xfs_bmdr, 0); | 2698 | dmxr = (int)XFS_BTREE_BLOCK_MAXRECS(dblocklen, xfs_bmdr, 0); |
2715 | fkp = XFS_BMAP_BROOT_KEY_ADDR(rblock, 1, rblocklen); | 2699 | fkp = XFS_BMAP_BROOT_KEY_ADDR(rblock, 1, rblocklen); |
2716 | tkp = XFS_BTREE_KEY_ADDR(dblocklen, xfs_bmdr, dblock, 1, dmxr); | 2700 | tkp = XFS_BTREE_KEY_ADDR(dblocklen, xfs_bmdr, dblock, 1, dmxr); |
2717 | fpp = XFS_BMAP_BROOT_PTR_ADDR(rblock, 1, rblocklen); | 2701 | fpp = XFS_BMAP_BROOT_PTR_ADDR(rblock, 1, rblocklen); |
2718 | tpp = XFS_BTREE_PTR_ADDR(dblocklen, xfs_bmdr, dblock, 1, dmxr); | 2702 | tpp = XFS_BTREE_PTR_ADDR(dblocklen, xfs_bmdr, dblock, 1, dmxr); |
2719 | dmxr = INT_GET(dblock->bb_numrecs, ARCH_CONVERT); | 2703 | dmxr = be16_to_cpu(dblock->bb_numrecs); |
2720 | memcpy(tkp, fkp, sizeof(*fkp) * dmxr); | 2704 | memcpy(tkp, fkp, sizeof(*fkp) * dmxr); |
2721 | memcpy(tpp, fpp, sizeof(*fpp) * dmxr); /* INT_: direct copy */ | 2705 | memcpy(tpp, fpp, sizeof(*fpp) * dmxr); /* INT_: direct copy */ |
2722 | } | 2706 | } |