0001
0002
0003
0004
0005
0006 #ifndef __XFS_TRANS_RESV_H__
0007 #define __XFS_TRANS_RESV_H__
0008
0009 struct xfs_mount;
0010
0011
0012
0013
0014 struct xfs_trans_res {
0015 uint tr_logres;
0016 int tr_logcount;
0017 int tr_logflags;
0018
0019 };
0020
0021 struct xfs_trans_resv {
0022 struct xfs_trans_res tr_write;
0023 struct xfs_trans_res tr_itruncate;
0024 struct xfs_trans_res tr_rename;
0025 struct xfs_trans_res tr_link;
0026 struct xfs_trans_res tr_remove;
0027 struct xfs_trans_res tr_symlink;
0028 struct xfs_trans_res tr_create;
0029 struct xfs_trans_res tr_create_tmpfile;
0030 struct xfs_trans_res tr_mkdir;
0031 struct xfs_trans_res tr_ifree;
0032 struct xfs_trans_res tr_ichange;
0033 struct xfs_trans_res tr_growdata;
0034 struct xfs_trans_res tr_addafork;
0035 struct xfs_trans_res tr_writeid;
0036 struct xfs_trans_res tr_attrinval;
0037
0038 struct xfs_trans_res tr_attrsetm;
0039
0040 struct xfs_trans_res tr_attrsetrt;
0041
0042 struct xfs_trans_res tr_attrrm;
0043 struct xfs_trans_res tr_clearagi;
0044 struct xfs_trans_res tr_growrtalloc;
0045 struct xfs_trans_res tr_growrtzero;
0046 struct xfs_trans_res tr_growrtfree;
0047 struct xfs_trans_res tr_qm_setqlim;
0048 struct xfs_trans_res tr_qm_dqalloc;
0049 struct xfs_trans_res tr_sb;
0050 struct xfs_trans_res tr_fsyncts;
0051 };
0052
0053
0054 #define M_RES(mp) (&(mp)->m_resv)
0055
0056
0057
0058
0059
0060
0061
0062
0063 #define XFS_DIROP_LOG_RES(mp) \
0064 (XFS_FSB_TO_B(mp, XFS_DAENTER_BLOCKS(mp, XFS_DATA_FORK)) + \
0065 (XFS_FSB_TO_B(mp, XFS_DAENTER_BMAPS(mp, XFS_DATA_FORK) + 1)))
0066 #define XFS_DIROP_LOG_COUNT(mp) \
0067 (XFS_DAENTER_BLOCKS(mp, XFS_DATA_FORK) + \
0068 XFS_DAENTER_BMAPS(mp, XFS_DATA_FORK) + 1)
0069
0070
0071
0072
0073 #define XFS_DEFAULT_LOG_COUNT 1
0074 #define XFS_DEFAULT_PERM_LOG_COUNT 2
0075 #define XFS_ITRUNCATE_LOG_COUNT 2
0076 #define XFS_INACTIVE_LOG_COUNT 2
0077 #define XFS_CREATE_LOG_COUNT 2
0078 #define XFS_CREATE_TMPFILE_LOG_COUNT 2
0079 #define XFS_MKDIR_LOG_COUNT 3
0080 #define XFS_SYMLINK_LOG_COUNT 3
0081 #define XFS_REMOVE_LOG_COUNT 2
0082 #define XFS_LINK_LOG_COUNT 2
0083 #define XFS_RENAME_LOG_COUNT 2
0084 #define XFS_WRITE_LOG_COUNT 2
0085 #define XFS_ADDAFORK_LOG_COUNT 2
0086 #define XFS_ATTRINVAL_LOG_COUNT 1
0087 #define XFS_ATTRSET_LOG_COUNT 3
0088 #define XFS_ATTRRM_LOG_COUNT 3
0089
0090
0091
0092
0093
0094
0095 #define XFS_ITRUNCATE_LOG_COUNT_REFLINK 8
0096 #define XFS_WRITE_LOG_COUNT_REFLINK 8
0097
0098 void xfs_trans_resv_calc(struct xfs_mount *mp, struct xfs_trans_resv *resp);
0099 uint xfs_allocfree_block_count(struct xfs_mount *mp, uint num_ops);
0100
0101 unsigned int xfs_calc_itruncate_reservation_minlogsize(struct xfs_mount *mp);
0102 unsigned int xfs_calc_write_reservation_minlogsize(struct xfs_mount *mp);
0103 unsigned int xfs_calc_qm_dqalloc_reservation_minlogsize(struct xfs_mount *mp);
0104
0105 #endif