xfs: support the XFS_BTNUM_FINOBT free inode btree type
Define the AGI fields for the finobt root/level and add magic numbers. Update the btree code to add support for the new XFS_BTNUM_FINOBT inode btree. The finobt root block is reserved immediately following the inobt root block in the AG. Update XFS_PREALLOC_BLOCKS() to determine the starting AG data block based on whether finobt support is enabled. Signed-off-by: Brian Foster <bfoster@redhat.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:

committed by
Dave Chinner

parent
8e2c84df20
commit
aafc3c2465
@@ -202,6 +202,8 @@ typedef __be32 xfs_alloc_ptr_t;
|
||||
*/
|
||||
#define XFS_IBT_MAGIC 0x49414254 /* 'IABT' */
|
||||
#define XFS_IBT_CRC_MAGIC 0x49414233 /* 'IAB3' */
|
||||
#define XFS_FIBT_MAGIC 0x46494254 /* 'FIBT' */
|
||||
#define XFS_FIBT_CRC_MAGIC 0x46494233 /* 'FIB3' */
|
||||
|
||||
typedef __uint64_t xfs_inofree_t;
|
||||
#define XFS_INODES_PER_CHUNK (NBBY * sizeof(xfs_inofree_t))
|
||||
@@ -244,7 +246,17 @@ typedef __be32 xfs_inobt_ptr_t;
|
||||
* block numbers in the AG.
|
||||
*/
|
||||
#define XFS_IBT_BLOCK(mp) ((xfs_agblock_t)(XFS_CNT_BLOCK(mp) + 1))
|
||||
#define XFS_PREALLOC_BLOCKS(mp) ((xfs_agblock_t)(XFS_IBT_BLOCK(mp) + 1))
|
||||
#define XFS_FIBT_BLOCK(mp) ((xfs_agblock_t)(XFS_IBT_BLOCK(mp) + 1))
|
||||
|
||||
/*
|
||||
* The first data block of an AG depends on whether the filesystem was formatted
|
||||
* with the finobt feature. If so, account for the finobt reserved root btree
|
||||
* block.
|
||||
*/
|
||||
#define XFS_PREALLOC_BLOCKS(mp) \
|
||||
(xfs_sb_version_hasfinobt(&((mp)->m_sb)) ? \
|
||||
XFS_FIBT_BLOCK(mp) + 1 : \
|
||||
XFS_IBT_BLOCK(mp) + 1)
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user