xfs: add support for large btree blocks
Add support for larger btree blocks that contains a CRC32C checksum, a filesystem uuid and block number for detecting filesystem consistency and out of place writes. [dchinner@redhat.com] Also include an owner field to allow reverse mappings to be implemented for improved repairability and a LSN field to so that log recovery can easily determine the last modification that made it to disk for each buffer. [dchinner@redhat.com] Add buffer log format flags to indicate the type of buffer to recovery so that we don't have to do blind magic number tests to determine what the buffer is. [dchinner@redhat.com] Modified to fit into the verifier structure. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Ben Myers <bpm@sgi.com> Signed-off-by: Ben Myers <bpm@sgi.com>
This commit is contained in:
parent
a2050646f6
commit
ee1a47ab0e
17 changed files with 642 additions and 206 deletions
|
@ -316,7 +316,13 @@ xfs_growfs_data_private(
|
|||
goto error0;
|
||||
}
|
||||
|
||||
xfs_btree_init_block(mp, bp, XFS_ABTB_MAGIC, 0, 1, 0);
|
||||
if (xfs_sb_version_hascrc(&mp->m_sb))
|
||||
xfs_btree_init_block(mp, bp, XFS_ABTB_CRC_MAGIC, 0, 1,
|
||||
agno, XFS_BTREE_CRC_BLOCKS);
|
||||
else
|
||||
xfs_btree_init_block(mp, bp, XFS_ABTB_MAGIC, 0, 1,
|
||||
agno, 0);
|
||||
|
||||
arec = XFS_ALLOC_REC_ADDR(mp, XFS_BUF_TO_BLOCK(bp), 1);
|
||||
arec->ar_startblock = cpu_to_be32(XFS_PREALLOC_BLOCKS(mp));
|
||||
arec->ar_blockcount = cpu_to_be32(
|
||||
|
@ -339,7 +345,13 @@ xfs_growfs_data_private(
|
|||
goto error0;
|
||||
}
|
||||
|
||||
xfs_btree_init_block(mp, bp, XFS_ABTC_MAGIC, 0, 1, 0);
|
||||
if (xfs_sb_version_hascrc(&mp->m_sb))
|
||||
xfs_btree_init_block(mp, bp, XFS_ABTC_CRC_MAGIC, 0, 1,
|
||||
agno, XFS_BTREE_CRC_BLOCKS);
|
||||
else
|
||||
xfs_btree_init_block(mp, bp, XFS_ABTC_MAGIC, 0, 1,
|
||||
agno, 0);
|
||||
|
||||
arec = XFS_ALLOC_REC_ADDR(mp, XFS_BUF_TO_BLOCK(bp), 1);
|
||||
arec->ar_startblock = cpu_to_be32(XFS_PREALLOC_BLOCKS(mp));
|
||||
arec->ar_blockcount = cpu_to_be32(
|
||||
|
@ -363,7 +375,12 @@ xfs_growfs_data_private(
|
|||
goto error0;
|
||||
}
|
||||
|
||||
xfs_btree_init_block(mp, bp, XFS_IBT_MAGIC, 0, 0, 0);
|
||||
if (xfs_sb_version_hascrc(&mp->m_sb))
|
||||
xfs_btree_init_block(mp, bp, XFS_IBT_CRC_MAGIC, 0, 0,
|
||||
agno, XFS_BTREE_CRC_BLOCKS);
|
||||
else
|
||||
xfs_btree_init_block(mp, bp, XFS_IBT_MAGIC, 0, 0,
|
||||
agno, 0);
|
||||
|
||||
error = xfs_bwrite(bp);
|
||||
xfs_buf_relse(bp);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue