On 01/10/13 07:47, Jeff Liu wrote:
Add a helper xfs_calc_buf_res() to calcuate out the space log reservations per item which were got involved in a transaction. It will call the xfs_buf_log_overhead() to figure out the extra space for the struct xfs_buf_log_format that gets written into the log for every buffer as well as a little bit of extra space because there also needs a log opheader, i.e. struct xlog_op_header.
The commit message is too wide.
Signed-off-by: Jie Liu<jeff.liu@xxxxxxxxxx> --- fs/xfs/xfs_trans.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c index 06ed520..6c601ea 100644 --- a/fs/xfs/xfs_trans.c +++ b/fs/xfs/xfs_trans.c @@ -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); +}
Not used directly except below. inline or fold below? --Mark. _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs