|
@@ -67,7 +67,8 @@ xfs_calc_buf_res(
|
|
|
* Per-extent log reservation for the btree changes involved in freeing or
|
|
|
* allocating an extent. In classic XFS there were two trees that will be
|
|
|
* modified (bnobt + cntbt). With rmap enabled, there are three trees
|
|
|
- * (rmapbt). The number of blocks reserved is based on the formula:
|
|
|
+ * (rmapbt). With reflink, there are four trees (refcountbt). The number of
|
|
|
+ * blocks reserved is based on the formula:
|
|
|
*
|
|
|
* num trees * ((2 blocks/level * max depth) - 1)
|
|
|
*
|
|
@@ -83,6 +84,8 @@ xfs_allocfree_log_count(
|
|
|
blocks = num_ops * 2 * (2 * mp->m_ag_maxlevels - 1);
|
|
|
if (xfs_sb_version_hasrmapbt(&mp->m_sb))
|
|
|
blocks += num_ops * (2 * mp->m_rmap_maxlevels - 1);
|
|
|
+ if (xfs_sb_version_hasreflink(&mp->m_sb))
|
|
|
+ blocks += num_ops * (2 * mp->m_refc_maxlevels - 1);
|
|
|
|
|
|
return blocks;
|
|
|
}
|