xfs: add a helper to figure out the space log reservation per item
PATCH v4 1/13 xfs: add a helper to figure out the space log reservation per item
Add a new helper xfs_calc_buf_res() to calcuate out the transaction space reservations per item. xfs_buf_log_overhead() is used to figure out the extra space for struct xfs_buf_log_format that gets written into the log for every buffer as well as a log opheader, i.e. struct xlog_op_header.
Signed-off-by Jie Liu <[email protected]>
CC Dave Chinner <[email protected]>
Reviewed-by Mark Tinguely <[email protected]>
--- fs/xfs/xfs_trans.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+)
fs/xfs/xfs_trans.c +31 -0
@@ -37,14 +37,45 @@#include "xfs_extent_busy.h" #include "xfs_bmap.h" #include "xfs_quota.h" +#include "xfs_qm.h" #include "xfs_trans_priv.h" #include "xfs_trans_space.h" #include "xfs_inode_item.h" +#include "xfs_log_priv.h" +#include "xfs_buf_item.h" #include "xfs_trace.h" kmem_zone_t *xfs_trans_zone;kmem_zone_t *xfs_log_item_desc_zone; +/* +* A buffer has a format structure overhead in the log in addition +* to the data, so we need to take this into account when reserving +* space in a transaction for a buffer. Round the space required up +* to a multiple of 128 bytes so that we don't change the historical +* reservation that has been used for this overhead. +*/ +STATIC uint +xfs_buf_log_overhead (void ) +{ +return round_up (sizeof (struct xlog_op_header ) + +sizeof (struct xfs_buf_log_format ),128 ); +} + +/* +* Calculate out transaction log reservation per item in bytes. +* +* The nbufs argument is used to indicate the number of items that +* will be changed in a transaction. size is used to tell how many +* bytes should be reserved per item. +*/ +STATIC uint +xfs_calc_buf_res ( +uint nbufs, +uint size) +{ +return nbufs * (size +xfs_buf_log_overhead ()); +}/* * Various log reservation values.
Signature · 6 lines
1.7.9.5 _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs