diff options
| -rw-r--r-- | fs/xfs/xfs_fsops.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index 02fb943cbf22..96e4eb0d9452 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c | |||
| @@ -316,6 +316,10 @@ xfs_growfs_data_private( | |||
| 316 | agi->agi_dirino = cpu_to_be32(NULLAGINO); | 316 | agi->agi_dirino = cpu_to_be32(NULLAGINO); |
| 317 | if (xfs_sb_version_hascrc(&mp->m_sb)) | 317 | if (xfs_sb_version_hascrc(&mp->m_sb)) |
| 318 | uuid_copy(&agi->agi_uuid, &mp->m_sb.sb_uuid); | 318 | uuid_copy(&agi->agi_uuid, &mp->m_sb.sb_uuid); |
| 319 | if (xfs_sb_version_hasfinobt(&mp->m_sb)) { | ||
| 320 | agi->agi_free_root = cpu_to_be32(XFS_FIBT_BLOCK(mp)); | ||
| 321 | agi->agi_free_level = cpu_to_be32(1); | ||
| 322 | } | ||
| 319 | for (bucket = 0; bucket < XFS_AGI_UNLINKED_BUCKETS; bucket++) | 323 | for (bucket = 0; bucket < XFS_AGI_UNLINKED_BUCKETS; bucket++) |
| 320 | agi->agi_unlinked[bucket] = cpu_to_be32(NULLAGINO); | 324 | agi->agi_unlinked[bucket] = cpu_to_be32(NULLAGINO); |
| 321 | 325 | ||
| @@ -407,6 +411,34 @@ xfs_growfs_data_private( | |||
| 407 | xfs_buf_relse(bp); | 411 | xfs_buf_relse(bp); |
| 408 | if (error) | 412 | if (error) |
| 409 | goto error0; | 413 | goto error0; |
| 414 | |||
| 415 | /* | ||
| 416 | * FINO btree root block | ||
| 417 | */ | ||
| 418 | if (xfs_sb_version_hasfinobt(&mp->m_sb)) { | ||
| 419 | bp = xfs_growfs_get_hdr_buf(mp, | ||
| 420 | XFS_AGB_TO_DADDR(mp, agno, XFS_FIBT_BLOCK(mp)), | ||
| 421 | BTOBB(mp->m_sb.sb_blocksize), 0, | ||
| 422 | &xfs_inobt_buf_ops); | ||
| 423 | if (!bp) { | ||
| 424 | error = ENOMEM; | ||
| 425 | goto error0; | ||
| 426 | } | ||
| 427 | |||
| 428 | if (xfs_sb_version_hascrc(&mp->m_sb)) | ||
| 429 | xfs_btree_init_block(mp, bp, XFS_FIBT_CRC_MAGIC, | ||
| 430 | 0, 0, agno, | ||
| 431 | XFS_BTREE_CRC_BLOCKS); | ||
| 432 | else | ||
| 433 | xfs_btree_init_block(mp, bp, XFS_FIBT_MAGIC, 0, | ||
| 434 | 0, agno, 0); | ||
| 435 | |||
| 436 | error = xfs_bwrite(bp); | ||
| 437 | xfs_buf_relse(bp); | ||
| 438 | if (error) | ||
| 439 | goto error0; | ||
| 440 | } | ||
| 441 | |||
| 410 | } | 442 | } |
| 411 | xfs_trans_agblocks_delta(tp, nfree); | 443 | xfs_trans_agblocks_delta(tp, nfree); |
| 412 | /* | 444 | /* |
