On 01/24/13 05:13, Jeff Liu wrote:
Currently, we calculate the attribute set transaction log space reservation at runtime in two parts: 1) XFS_ATTRSET_LOG_RES() which is calculated out at mount time. 2) ((ext * (mp)->m_sb.sb_sectsize) + \ (ext * XFS_FSB_TO_B((mp), XFS_BM_MAXLEVELS(mp, XFS_ATTR_FORK))) + \ (128 * (ext + (ext * XFS_BM_MAXLEVELS(mp, XFS_ATTR_FORK)))))) which is calculated out at runtime since it depend on the extent length in blocks. This patch change the XFS_ATTRSET_LOG_RES(mp) to XFS_ATTRSETM_LOG_RES(mp) that it is still figured out at mount time, and introduce a new XFS_ATTRSETRT_LOG_RES(mp) which would be used to calculate out the unit of the log space reservation for one block. Then we can get the runtime spaces via: XFS_ATTRSETM_LOG_RES(mp) + XFS_ATTRSETRT_LOG_RES(mp) * ext, so that we don't need to export the xfs_calc_buf_res() function. Signed-off-by: Jie Liu<jeff.liu@xxxxxxxxxx> --- fs/xfs/xfs_attr.c | 9 ++++++--- fs/xfs/xfs_mount.h | 3 ++- fs/xfs/xfs_trans.c | 28 ++++++++++++++++++++++++---- fs/xfs/xfs_trans.h | 11 ++++------- 4 files changed, 36 insertions(+), 15 deletions(-)
Looks good. Reviewed-by: Mark Tinguely <tinguely@xxxxxxx> _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs