diff options
Diffstat (limited to 'fs/xfs/xfs_ialloc.c')
| -rw-r--r-- | fs/xfs/xfs_ialloc.c | 74 |
1 files changed, 36 insertions, 38 deletions
diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index d8ceb3d1865f..8f3fae1aa98a 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c | |||
| @@ -178,8 +178,8 @@ xfs_ialloc_ag_alloc( | |||
| 178 | * Ideally they should be spaced out through the a.g. | 178 | * Ideally they should be spaced out through the a.g. |
| 179 | * For now, just allocate blocks up front. | 179 | * For now, just allocate blocks up front. |
| 180 | */ | 180 | */ |
| 181 | args.agbno = INT_GET(agi->agi_root, ARCH_CONVERT); | 181 | args.agbno = be32_to_cpu(agi->agi_root); |
| 182 | args.fsbno = XFS_AGB_TO_FSB(args.mp, INT_GET(agi->agi_seqno, ARCH_CONVERT), | 182 | args.fsbno = XFS_AGB_TO_FSB(args.mp, be32_to_cpu(agi->agi_seqno), |
| 183 | args.agbno); | 183 | args.agbno); |
| 184 | /* | 184 | /* |
| 185 | * Allocate a fixed-size extent of inodes. | 185 | * Allocate a fixed-size extent of inodes. |
| @@ -201,9 +201,9 @@ xfs_ialloc_ag_alloc( | |||
| 201 | */ | 201 | */ |
| 202 | if (isaligned && args.fsbno == NULLFSBLOCK) { | 202 | if (isaligned && args.fsbno == NULLFSBLOCK) { |
| 203 | args.type = XFS_ALLOCTYPE_NEAR_BNO; | 203 | args.type = XFS_ALLOCTYPE_NEAR_BNO; |
| 204 | args.agbno = INT_GET(agi->agi_root, ARCH_CONVERT); | 204 | args.agbno = be32_to_cpu(agi->agi_root); |
| 205 | args.fsbno = XFS_AGB_TO_FSB(args.mp, | 205 | args.fsbno = XFS_AGB_TO_FSB(args.mp, |
| 206 | INT_GET(agi->agi_seqno, ARCH_CONVERT), args.agbno); | 206 | be32_to_cpu(agi->agi_seqno), args.agbno); |
| 207 | if (XFS_SB_VERSION_HASALIGN(&args.mp->m_sb) && | 207 | if (XFS_SB_VERSION_HASALIGN(&args.mp->m_sb) && |
| 208 | args.mp->m_sb.sb_inoalignmt >= | 208 | args.mp->m_sb.sb_inoalignmt >= |
| 209 | XFS_B_TO_FSBT(args.mp, XFS_INODE_CLUSTER_SIZE(args.mp))) | 209 | XFS_B_TO_FSBT(args.mp, XFS_INODE_CLUSTER_SIZE(args.mp))) |
| @@ -258,7 +258,7 @@ xfs_ialloc_ag_alloc( | |||
| 258 | /* | 258 | /* |
| 259 | * Get the block. | 259 | * Get the block. |
| 260 | */ | 260 | */ |
| 261 | d = XFS_AGB_TO_DADDR(args.mp, INT_GET(agi->agi_seqno, ARCH_CONVERT), | 261 | d = XFS_AGB_TO_DADDR(args.mp, be32_to_cpu(agi->agi_seqno), |
| 262 | args.agbno + (j * blks_per_cluster)); | 262 | args.agbno + (j * blks_per_cluster)); |
| 263 | fbuf = xfs_trans_get_buf(tp, args.mp->m_ddev_targp, d, | 263 | fbuf = xfs_trans_get_buf(tp, args.mp->m_ddev_targp, d, |
| 264 | args.mp->m_bsize * blks_per_cluster, | 264 | args.mp->m_bsize * blks_per_cluster, |
| @@ -278,17 +278,17 @@ xfs_ialloc_ag_alloc( | |||
| 278 | } | 278 | } |
| 279 | xfs_trans_inode_alloc_buf(tp, fbuf); | 279 | xfs_trans_inode_alloc_buf(tp, fbuf); |
| 280 | } | 280 | } |
| 281 | INT_MOD(agi->agi_count, ARCH_CONVERT, newlen); | 281 | be32_add(&agi->agi_count, newlen); |
| 282 | INT_MOD(agi->agi_freecount, ARCH_CONVERT, newlen); | 282 | be32_add(&agi->agi_freecount, newlen); |
| 283 | down_read(&args.mp->m_peraglock); | 283 | down_read(&args.mp->m_peraglock); |
| 284 | args.mp->m_perag[INT_GET(agi->agi_seqno, ARCH_CONVERT)].pagi_freecount += newlen; | 284 | args.mp->m_perag[be32_to_cpu(agi->agi_seqno)].pagi_freecount += newlen; |
| 285 | up_read(&args.mp->m_peraglock); | 285 | up_read(&args.mp->m_peraglock); |
| 286 | INT_SET(agi->agi_newino, ARCH_CONVERT, newino); | 286 | agi->agi_newino = cpu_to_be32(newino); |
| 287 | /* | 287 | /* |
| 288 | * Insert records describing the new inode chunk into the btree. | 288 | * Insert records describing the new inode chunk into the btree. |
| 289 | */ | 289 | */ |
| 290 | cur = xfs_btree_init_cursor(args.mp, tp, agbp, | 290 | cur = xfs_btree_init_cursor(args.mp, tp, agbp, |
| 291 | INT_GET(agi->agi_seqno, ARCH_CONVERT), | 291 | be32_to_cpu(agi->agi_seqno), |
| 292 | XFS_BTNUM_INO, (xfs_inode_t *)0, 0); | 292 | XFS_BTNUM_INO, (xfs_inode_t *)0, 0); |
| 293 | for (thisino = newino; | 293 | for (thisino = newino; |
| 294 | thisino < newino + newlen; | 294 | thisino < newino + newlen; |
| @@ -528,7 +528,7 @@ xfs_dialloc( | |||
| 528 | return 0; | 528 | return 0; |
| 529 | } | 529 | } |
| 530 | agi = XFS_BUF_TO_AGI(agbp); | 530 | agi = XFS_BUF_TO_AGI(agbp); |
| 531 | ASSERT(INT_GET(agi->agi_magicnum, ARCH_CONVERT) == XFS_AGI_MAGIC); | 531 | ASSERT(be32_to_cpu(agi->agi_magicnum) == XFS_AGI_MAGIC); |
| 532 | } else { | 532 | } else { |
| 533 | /* | 533 | /* |
| 534 | * Continue where we left off before. In this case, we | 534 | * Continue where we left off before. In this case, we |
| @@ -536,12 +536,12 @@ xfs_dialloc( | |||
| 536 | */ | 536 | */ |
| 537 | agbp = *IO_agbp; | 537 | agbp = *IO_agbp; |
| 538 | agi = XFS_BUF_TO_AGI(agbp); | 538 | agi = XFS_BUF_TO_AGI(agbp); |
| 539 | ASSERT(INT_GET(agi->agi_magicnum, ARCH_CONVERT) == XFS_AGI_MAGIC); | 539 | ASSERT(be32_to_cpu(agi->agi_magicnum) == XFS_AGI_MAGIC); |
| 540 | ASSERT(INT_GET(agi->agi_freecount, ARCH_CONVERT) > 0); | 540 | ASSERT(be32_to_cpu(agi->agi_freecount) > 0); |
| 541 | } | 541 | } |
| 542 | mp = tp->t_mountp; | 542 | mp = tp->t_mountp; |
| 543 | agcount = mp->m_sb.sb_agcount; | 543 | agcount = mp->m_sb.sb_agcount; |
| 544 | agno = INT_GET(agi->agi_seqno, ARCH_CONVERT); | 544 | agno = be32_to_cpu(agi->agi_seqno); |
| 545 | tagno = agno; | 545 | tagno = agno; |
| 546 | pagno = XFS_INO_TO_AGNO(mp, parent); | 546 | pagno = XFS_INO_TO_AGNO(mp, parent); |
| 547 | pagino = XFS_INO_TO_AGINO(mp, parent); | 547 | pagino = XFS_INO_TO_AGINO(mp, parent); |
| @@ -589,7 +589,7 @@ xfs_dialloc( | |||
| 589 | * can commit the current transaction and call | 589 | * can commit the current transaction and call |
| 590 | * us again where we left off. | 590 | * us again where we left off. |
| 591 | */ | 591 | */ |
| 592 | ASSERT(INT_GET(agi->agi_freecount, ARCH_CONVERT) > 0); | 592 | ASSERT(be32_to_cpu(agi->agi_freecount) > 0); |
| 593 | *alloc_done = B_TRUE; | 593 | *alloc_done = B_TRUE; |
| 594 | *IO_agbp = agbp; | 594 | *IO_agbp = agbp; |
| 595 | *inop = NULLFSINO; | 595 | *inop = NULLFSINO; |
| @@ -620,7 +620,7 @@ nextag: | |||
| 620 | if (error) | 620 | if (error) |
| 621 | goto nextag; | 621 | goto nextag; |
| 622 | agi = XFS_BUF_TO_AGI(agbp); | 622 | agi = XFS_BUF_TO_AGI(agbp); |
| 623 | ASSERT(INT_GET(agi->agi_magicnum, ARCH_CONVERT) == XFS_AGI_MAGIC); | 623 | ASSERT(be32_to_cpu(agi->agi_magicnum) == XFS_AGI_MAGIC); |
| 624 | } | 624 | } |
| 625 | /* | 625 | /* |
| 626 | * Here with an allocation group that has a free inode. | 626 | * Here with an allocation group that has a free inode. |
| @@ -629,14 +629,14 @@ nextag: | |||
| 629 | */ | 629 | */ |
| 630 | agno = tagno; | 630 | agno = tagno; |
| 631 | *IO_agbp = NULL; | 631 | *IO_agbp = NULL; |
| 632 | cur = xfs_btree_init_cursor(mp, tp, agbp, INT_GET(agi->agi_seqno, ARCH_CONVERT), | 632 | cur = xfs_btree_init_cursor(mp, tp, agbp, be32_to_cpu(agi->agi_seqno), |
| 633 | XFS_BTNUM_INO, (xfs_inode_t *)0, 0); | 633 | XFS_BTNUM_INO, (xfs_inode_t *)0, 0); |
| 634 | /* | 634 | /* |
| 635 | * If pagino is 0 (this is the root inode allocation) use newino. | 635 | * If pagino is 0 (this is the root inode allocation) use newino. |
| 636 | * This must work because we've just allocated some. | 636 | * This must work because we've just allocated some. |
| 637 | */ | 637 | */ |
| 638 | if (!pagino) | 638 | if (!pagino) |
| 639 | pagino = INT_GET(agi->agi_newino, ARCH_CONVERT); | 639 | pagino = be32_to_cpu(agi->agi_newino); |
| 640 | #ifdef DEBUG | 640 | #ifdef DEBUG |
| 641 | if (cur->bc_nlevels == 1) { | 641 | if (cur->bc_nlevels == 1) { |
| 642 | int freecount = 0; | 642 | int freecount = 0; |
| @@ -654,7 +654,7 @@ nextag: | |||
| 654 | goto error0; | 654 | goto error0; |
| 655 | } while (i == 1); | 655 | } while (i == 1); |
| 656 | 656 | ||
| 657 | ASSERT(freecount == INT_GET(agi->agi_freecount, ARCH_CONVERT) || | 657 | ASSERT(freecount == be32_to_cpu(agi->agi_freecount) || |
| 658 | XFS_FORCED_SHUTDOWN(mp)); | 658 | XFS_FORCED_SHUTDOWN(mp)); |
| 659 | } | 659 | } |
| 660 | #endif | 660 | #endif |
| @@ -813,9 +813,9 @@ nextag: | |||
| 813 | * In a different a.g. from the parent. | 813 | * In a different a.g. from the parent. |
| 814 | * See if the most recently allocated block has any free. | 814 | * See if the most recently allocated block has any free. |
| 815 | */ | 815 | */ |
| 816 | else if (INT_GET(agi->agi_newino, ARCH_CONVERT) != NULLAGINO) { | 816 | else if (be32_to_cpu(agi->agi_newino) != NULLAGINO) { |
| 817 | if ((error = xfs_inobt_lookup_eq(cur, | 817 | if ((error = xfs_inobt_lookup_eq(cur, |
| 818 | INT_GET(agi->agi_newino, ARCH_CONVERT), 0, 0, &i))) | 818 | be32_to_cpu(agi->agi_newino), 0, 0, &i))) |
| 819 | goto error0; | 819 | goto error0; |
| 820 | if (i == 1 && | 820 | if (i == 1 && |
| 821 | (error = xfs_inobt_get_rec(cur, &rec.ir_startino, | 821 | (error = xfs_inobt_get_rec(cur, &rec.ir_startino, |
| @@ -862,7 +862,7 @@ nextag: | |||
| 862 | if ((error = xfs_inobt_update(cur, rec.ir_startino, rec.ir_freecount, | 862 | if ((error = xfs_inobt_update(cur, rec.ir_startino, rec.ir_freecount, |
| 863 | rec.ir_free))) | 863 | rec.ir_free))) |
| 864 | goto error0; | 864 | goto error0; |
| 865 | INT_MOD(agi->agi_freecount, ARCH_CONVERT, -1); | 865 | be32_add(&agi->agi_freecount, -1); |
| 866 | xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT); | 866 | xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT); |
| 867 | down_read(&mp->m_peraglock); | 867 | down_read(&mp->m_peraglock); |
| 868 | mp->m_perag[tagno].pagi_freecount--; | 868 | mp->m_perag[tagno].pagi_freecount--; |
| @@ -882,7 +882,7 @@ nextag: | |||
| 882 | if ((error = xfs_inobt_increment(cur, 0, &i))) | 882 | if ((error = xfs_inobt_increment(cur, 0, &i))) |
| 883 | goto error0; | 883 | goto error0; |
| 884 | } while (i == 1); | 884 | } while (i == 1); |
| 885 | ASSERT(freecount == INT_GET(agi->agi_freecount, ARCH_CONVERT) || | 885 | ASSERT(freecount == be32_to_cpu(agi->agi_freecount) || |
| 886 | XFS_FORCED_SHUTDOWN(mp)); | 886 | XFS_FORCED_SHUTDOWN(mp)); |
| 887 | } | 887 | } |
| 888 | #endif | 888 | #endif |
| @@ -970,8 +970,8 @@ xfs_difree( | |||
| 970 | return error; | 970 | return error; |
| 971 | } | 971 | } |
| 972 | agi = XFS_BUF_TO_AGI(agbp); | 972 | agi = XFS_BUF_TO_AGI(agbp); |
| 973 | ASSERT(INT_GET(agi->agi_magicnum, ARCH_CONVERT) == XFS_AGI_MAGIC); | 973 | ASSERT(be32_to_cpu(agi->agi_magicnum) == XFS_AGI_MAGIC); |
| 974 | ASSERT(agbno < INT_GET(agi->agi_length, ARCH_CONVERT)); | 974 | ASSERT(agbno < be32_to_cpu(agi->agi_length)); |
| 975 | /* | 975 | /* |
| 976 | * Initialize the cursor. | 976 | * Initialize the cursor. |
| 977 | */ | 977 | */ |
| @@ -993,7 +993,7 @@ xfs_difree( | |||
| 993 | goto error0; | 993 | goto error0; |
| 994 | } | 994 | } |
| 995 | } while (i == 1); | 995 | } while (i == 1); |
| 996 | ASSERT(freecount == INT_GET(agi->agi_freecount, ARCH_CONVERT) || | 996 | ASSERT(freecount == be32_to_cpu(agi->agi_freecount) || |
| 997 | XFS_FORCED_SHUTDOWN(mp)); | 997 | XFS_FORCED_SHUTDOWN(mp)); |
| 998 | } | 998 | } |
| 999 | #endif | 999 | #endif |
| @@ -1042,8 +1042,8 @@ xfs_difree( | |||
| 1042 | * to be freed when the transaction is committed. | 1042 | * to be freed when the transaction is committed. |
| 1043 | */ | 1043 | */ |
| 1044 | ilen = XFS_IALLOC_INODES(mp); | 1044 | ilen = XFS_IALLOC_INODES(mp); |
| 1045 | INT_MOD(agi->agi_count, ARCH_CONVERT, -ilen); | 1045 | be32_add(&agi->agi_count, -ilen); |
| 1046 | INT_MOD(agi->agi_freecount, ARCH_CONVERT, -(ilen - 1)); | 1046 | be32_add(&agi->agi_freecount, -(ilen - 1)); |
| 1047 | xfs_ialloc_log_agi(tp, agbp, XFS_AGI_COUNT | XFS_AGI_FREECOUNT); | 1047 | xfs_ialloc_log_agi(tp, agbp, XFS_AGI_COUNT | XFS_AGI_FREECOUNT); |
| 1048 | down_read(&mp->m_peraglock); | 1048 | down_read(&mp->m_peraglock); |
| 1049 | mp->m_perag[agno].pagi_freecount -= ilen - 1; | 1049 | mp->m_perag[agno].pagi_freecount -= ilen - 1; |
| @@ -1072,7 +1072,7 @@ xfs_difree( | |||
| 1072 | /* | 1072 | /* |
| 1073 | * Change the inode free counts and log the ag/sb changes. | 1073 | * Change the inode free counts and log the ag/sb changes. |
| 1074 | */ | 1074 | */ |
| 1075 | INT_MOD(agi->agi_freecount, ARCH_CONVERT, 1); | 1075 | be32_add(&agi->agi_freecount, 1); |
| 1076 | xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT); | 1076 | xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT); |
| 1077 | down_read(&mp->m_peraglock); | 1077 | down_read(&mp->m_peraglock); |
| 1078 | mp->m_perag[agno].pagi_freecount++; | 1078 | mp->m_perag[agno].pagi_freecount++; |
| @@ -1098,7 +1098,7 @@ xfs_difree( | |||
| 1098 | goto error0; | 1098 | goto error0; |
| 1099 | } | 1099 | } |
| 1100 | } while (i == 1); | 1100 | } while (i == 1); |
| 1101 | ASSERT(freecount == INT_GET(agi->agi_freecount, ARCH_CONVERT) || | 1101 | ASSERT(freecount == be32_to_cpu(agi->agi_freecount) || |
| 1102 | XFS_FORCED_SHUTDOWN(mp)); | 1102 | XFS_FORCED_SHUTDOWN(mp)); |
| 1103 | } | 1103 | } |
| 1104 | #endif | 1104 | #endif |
| @@ -1307,7 +1307,7 @@ xfs_ialloc_log_agi( | |||
| 1307 | xfs_agi_t *agi; /* allocation group header */ | 1307 | xfs_agi_t *agi; /* allocation group header */ |
| 1308 | 1308 | ||
| 1309 | agi = XFS_BUF_TO_AGI(bp); | 1309 | agi = XFS_BUF_TO_AGI(bp); |
| 1310 | ASSERT(INT_GET(agi->agi_magicnum, ARCH_CONVERT) == XFS_AGI_MAGIC); | 1310 | ASSERT(be32_to_cpu(agi->agi_magicnum) == XFS_AGI_MAGIC); |
| 1311 | #endif | 1311 | #endif |
| 1312 | /* | 1312 | /* |
| 1313 | * Compute byte offsets for the first and last fields. | 1313 | * Compute byte offsets for the first and last fields. |
| @@ -1349,9 +1349,8 @@ xfs_ialloc_read_agi( | |||
| 1349 | */ | 1349 | */ |
| 1350 | agi = XFS_BUF_TO_AGI(bp); | 1350 | agi = XFS_BUF_TO_AGI(bp); |
| 1351 | agi_ok = | 1351 | agi_ok = |
| 1352 | INT_GET(agi->agi_magicnum, ARCH_CONVERT) == XFS_AGI_MAGIC && | 1352 | be32_to_cpu(agi->agi_magicnum) == XFS_AGI_MAGIC && |
| 1353 | XFS_AGI_GOOD_VERSION( | 1353 | XFS_AGI_GOOD_VERSION(be32_to_cpu(agi->agi_versionnum)); |
| 1354 | INT_GET(agi->agi_versionnum, ARCH_CONVERT)); | ||
| 1355 | if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, | 1354 | if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, |
| 1356 | XFS_RANDOM_IALLOC_READ_AGI))) { | 1355 | XFS_RANDOM_IALLOC_READ_AGI))) { |
| 1357 | XFS_CORRUPTION_ERROR("xfs_ialloc_read_agi", XFS_ERRLEVEL_LOW, | 1356 | XFS_CORRUPTION_ERROR("xfs_ialloc_read_agi", XFS_ERRLEVEL_LOW, |
| @@ -1361,16 +1360,15 @@ xfs_ialloc_read_agi( | |||
| 1361 | } | 1360 | } |
| 1362 | pag = &mp->m_perag[agno]; | 1361 | pag = &mp->m_perag[agno]; |
| 1363 | if (!pag->pagi_init) { | 1362 | if (!pag->pagi_init) { |
| 1364 | pag->pagi_freecount = INT_GET(agi->agi_freecount, ARCH_CONVERT); | 1363 | pag->pagi_freecount = be32_to_cpu(agi->agi_freecount); |
| 1365 | pag->pagi_init = 1; | 1364 | pag->pagi_init = 1; |
| 1366 | } else { | 1365 | } else { |
| 1367 | /* | 1366 | /* |
| 1368 | * It's possible for these to be out of sync if | 1367 | * It's possible for these to be out of sync if |
| 1369 | * we are in the middle of a forced shutdown. | 1368 | * we are in the middle of a forced shutdown. |
| 1370 | */ | 1369 | */ |
| 1371 | ASSERT(pag->pagi_freecount == | 1370 | ASSERT(pag->pagi_freecount == be32_to_cpu(agi->agi_freecount) || |
| 1372 | INT_GET(agi->agi_freecount, ARCH_CONVERT) | 1371 | XFS_FORCED_SHUTDOWN(mp)); |
| 1373 | || XFS_FORCED_SHUTDOWN(mp)); | ||
| 1374 | } | 1372 | } |
| 1375 | 1373 | ||
| 1376 | #ifdef DEBUG | 1374 | #ifdef DEBUG |
