diff options
author | Brian Foster <bfoster@redhat.com> | 2014-04-24 16:00:52 +1000 |
---|---|---|
committer | Dave Chinner <david@fromorbit.com> | 2014-04-24 16:00:52 +1000 |
commit | 9d43b180af67cccd4bd1342f7f54f8131515b0a1 (patch) | |
tree | f4bb0ee658249dc78c5465a850e53add0384b236 /fs/xfs/xfs_trans_space.h | |
parent | aafc3c24652924ea951d215d04a3f42e832e9d7d (diff) | |
download | linux-9d43b180af67cccd4bd1342f7f54f8131515b0a1.tar.gz linux-9d43b180af67cccd4bd1342f7f54f8131515b0a1.tar.bz2 linux-9d43b180af67cccd4bd1342f7f54f8131515b0a1.zip |
xfs: update inode allocation/free transaction reservations for finobt
Create the xfs_calc_finobt_res() helper to calculate the finobt log
reservation for inode allocation and free. Update
XFS_IALLOC_SPACE_RES() to reserve blocks for the additional finobt
insertion on inode allocation. Create XFS_IFREE_SPACE_RES() to
reserve blocks for the potential finobt record insertion on inode
free (i.e., if an inode chunk was previously fully allocated).
Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/xfs/xfs_trans_space.h')
-rw-r--r-- | fs/xfs/xfs_trans_space.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/xfs/xfs_trans_space.h b/fs/xfs/xfs_trans_space.h index af5dbe06cb65..df4c1f81884c 100644 --- a/fs/xfs/xfs_trans_space.h +++ b/fs/xfs/xfs_trans_space.h @@ -47,7 +47,9 @@ #define XFS_DIRREMOVE_SPACE_RES(mp) \ XFS_DAREMOVE_SPACE_RES(mp, XFS_DATA_FORK) #define XFS_IALLOC_SPACE_RES(mp) \ - ((mp)->m_ialloc_blks + (mp)->m_in_maxlevels - 1) + ((mp)->m_ialloc_blks + \ + (xfs_sb_version_hasfinobt(&mp->m_sb) ? 2 : 1 * \ + ((mp)->m_in_maxlevels - 1))) /* * Space reservation values for various transactions. @@ -82,5 +84,8 @@ (XFS_DIRREMOVE_SPACE_RES(mp) + XFS_DIRENTER_SPACE_RES(mp,nl)) #define XFS_SYMLINK_SPACE_RES(mp,nl,b) \ (XFS_IALLOC_SPACE_RES(mp) + XFS_DIRENTER_SPACE_RES(mp,nl) + (b)) +#define XFS_IFREE_SPACE_RES(mp) \ + (xfs_sb_version_hasfinobt(&mp->m_sb) ? (mp)->m_in_maxlevels : 0) + #endif /* __XFS_TRANS_SPACE_H__ */ |