0001
0002
0003
0004
0005
0006 #ifndef __XFS_QUOTA_DEFS_H__
0007 #define __XFS_QUOTA_DEFS_H__
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 typedef uint64_t xfs_qcnt_t;
0019
0020 typedef uint8_t xfs_dqtype_t;
0021
0022 #define XFS_DQTYPE_STRINGS \
0023 { XFS_DQTYPE_USER, "USER" }, \
0024 { XFS_DQTYPE_PROJ, "PROJ" }, \
0025 { XFS_DQTYPE_GROUP, "GROUP" }, \
0026 { XFS_DQTYPE_BIGTIME, "BIGTIME" }
0027
0028
0029
0030
0031 #define XFS_DQFLAG_DIRTY (1u << 0)
0032 #define XFS_DQFLAG_FREEING (1u << 1)
0033
0034 #define XFS_DQFLAG_STRINGS \
0035 { XFS_DQFLAG_DIRTY, "DIRTY" }, \
0036 { XFS_DQFLAG_FREEING, "FREEING" }
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059 #define XFS_DQUOT_LOGRES(mp) \
0060 ((sizeof(struct xfs_dq_logformat) + sizeof(struct xfs_disk_dquot)) * 6)
0061
0062 #define XFS_IS_QUOTA_ON(mp) ((mp)->m_qflags & XFS_ALL_QUOTA_ACCT)
0063 #define XFS_IS_UQUOTA_ON(mp) ((mp)->m_qflags & XFS_UQUOTA_ACCT)
0064 #define XFS_IS_PQUOTA_ON(mp) ((mp)->m_qflags & XFS_PQUOTA_ACCT)
0065 #define XFS_IS_GQUOTA_ON(mp) ((mp)->m_qflags & XFS_GQUOTA_ACCT)
0066 #define XFS_IS_UQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_UQUOTA_ENFD)
0067 #define XFS_IS_GQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_GQUOTA_ENFD)
0068 #define XFS_IS_PQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_PQUOTA_ENFD)
0069
0070
0071
0072
0073
0074
0075 #define XFS_QMOPT_UQUOTA (1u << 0)
0076 #define XFS_QMOPT_GQUOTA (1u << 1)
0077 #define XFS_QMOPT_PQUOTA (1u << 2)
0078 #define XFS_QMOPT_FORCE_RES (1u << 3)
0079 #define XFS_QMOPT_SBVERSION (1u << 4)
0080
0081
0082
0083
0084
0085 #define XFS_QMOPT_RES_REGBLKS (1u << 7)
0086 #define XFS_QMOPT_RES_RTBLKS (1u << 8)
0087 #define XFS_QMOPT_BCOUNT (1u << 9)
0088 #define XFS_QMOPT_ICOUNT (1u << 10)
0089 #define XFS_QMOPT_RTBCOUNT (1u << 11)
0090 #define XFS_QMOPT_DELBCOUNT (1u << 12)
0091 #define XFS_QMOPT_DELRTBCOUNT (1u << 13)
0092 #define XFS_QMOPT_RES_INOS (1u << 14)
0093
0094
0095
0096
0097 #define XFS_QMOPT_INHERIT (1u << 31)
0098
0099 #define XFS_QMOPT_FLAGS \
0100 { XFS_QMOPT_UQUOTA, "UQUOTA" }, \
0101 { XFS_QMOPT_PQUOTA, "PQUOTA" }, \
0102 { XFS_QMOPT_FORCE_RES, "FORCE_RES" }, \
0103 { XFS_QMOPT_SBVERSION, "SBVERSION" }, \
0104 { XFS_QMOPT_GQUOTA, "GQUOTA" }, \
0105 { XFS_QMOPT_INHERIT, "INHERIT" }, \
0106 { XFS_QMOPT_RES_REGBLKS, "RES_REGBLKS" }, \
0107 { XFS_QMOPT_RES_RTBLKS, "RES_RTBLKS" }, \
0108 { XFS_QMOPT_BCOUNT, "BCOUNT" }, \
0109 { XFS_QMOPT_ICOUNT, "ICOUNT" }, \
0110 { XFS_QMOPT_RTBCOUNT, "RTBCOUNT" }, \
0111 { XFS_QMOPT_DELBCOUNT, "DELBCOUNT" }, \
0112 { XFS_QMOPT_DELRTBCOUNT, "DELRTBCOUNT" }, \
0113 { XFS_QMOPT_RES_INOS, "RES_INOS" }
0114
0115
0116
0117
0118 #define XFS_TRANS_DQ_RES_BLKS XFS_QMOPT_RES_REGBLKS
0119 #define XFS_TRANS_DQ_RES_RTBLKS XFS_QMOPT_RES_RTBLKS
0120 #define XFS_TRANS_DQ_RES_INOS XFS_QMOPT_RES_INOS
0121 #define XFS_TRANS_DQ_BCOUNT XFS_QMOPT_BCOUNT
0122 #define XFS_TRANS_DQ_DELBCOUNT XFS_QMOPT_DELBCOUNT
0123 #define XFS_TRANS_DQ_ICOUNT XFS_QMOPT_ICOUNT
0124 #define XFS_TRANS_DQ_RTBCOUNT XFS_QMOPT_RTBCOUNT
0125 #define XFS_TRANS_DQ_DELRTBCOUNT XFS_QMOPT_DELRTBCOUNT
0126
0127
0128 #define XFS_QMOPT_QUOTALL \
0129 (XFS_QMOPT_UQUOTA | XFS_QMOPT_PQUOTA | XFS_QMOPT_GQUOTA)
0130 #define XFS_QMOPT_RESBLK_MASK (XFS_QMOPT_RES_REGBLKS | XFS_QMOPT_RES_RTBLKS)
0131
0132
0133 extern xfs_failaddr_t xfs_dquot_verify(struct xfs_mount *mp,
0134 struct xfs_disk_dquot *ddq, xfs_dqid_t id);
0135 extern xfs_failaddr_t xfs_dqblk_verify(struct xfs_mount *mp,
0136 struct xfs_dqblk *dqb, xfs_dqid_t id);
0137 extern int xfs_calc_dquots_per_chunk(unsigned int nbblks);
0138 extern void xfs_dqblk_repair(struct xfs_mount *mp, struct xfs_dqblk *dqb,
0139 xfs_dqid_t id, xfs_dqtype_t type);
0140
0141 struct xfs_dquot;
0142 time64_t xfs_dquot_from_disk_ts(struct xfs_disk_dquot *ddq,
0143 __be32 dtimer);
0144 __be32 xfs_dquot_to_disk_ts(struct xfs_dquot *ddq, time64_t timer);
0145
0146 #endif