1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#ifndef __XFS_QUOTA_DEFS_H__
19#define __XFS_QUOTA_DEFS_H__
20
21
22
23
24
25
26
27
28
29
30typedef __uint64_t xfs_qcnt_t;
31typedef __uint16_t xfs_qwarncnt_t;
32
33
34
35
36#define XFS_DQ_USER 0x0001
37#define XFS_DQ_PROJ 0x0002
38#define XFS_DQ_GROUP 0x0004
39#define XFS_DQ_DIRTY 0x0008
40#define XFS_DQ_FREEING 0x0010
41
42#define XFS_DQ_ALLTYPES (XFS_DQ_USER|XFS_DQ_PROJ|XFS_DQ_GROUP)
43
44#define XFS_DQ_FLAGS \
45 { XFS_DQ_USER, "USER" }, \
46 { XFS_DQ_PROJ, "PROJ" }, \
47 { XFS_DQ_GROUP, "GROUP" }, \
48 { XFS_DQ_DIRTY, "DIRTY" }, \
49 { XFS_DQ_FREEING, "FREEING" }
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72#define XFS_DQUOT_LOGRES(mp) \
73 ((sizeof(struct xfs_dq_logformat) + sizeof(struct xfs_disk_dquot)) * 6)
74
75#define XFS_IS_QUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_ALL_QUOTA_ACCT)
76#define XFS_IS_UQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_UQUOTA_ACCT)
77#define XFS_IS_PQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_PQUOTA_ACCT)
78#define XFS_IS_GQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_GQUOTA_ACCT)
79#define XFS_IS_UQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_UQUOTA_ENFD)
80#define XFS_IS_GQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_GQUOTA_ENFD)
81#define XFS_IS_PQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_PQUOTA_ENFD)
82
83
84
85
86
87
88#define XFS_UQUOTA_ACTIVE 0x1000
89#define XFS_GQUOTA_ACTIVE 0x2000
90#define XFS_PQUOTA_ACTIVE 0x4000
91#define XFS_ALL_QUOTA_ACTIVE \
92 (XFS_UQUOTA_ACTIVE | XFS_GQUOTA_ACTIVE | XFS_PQUOTA_ACTIVE)
93
94
95
96
97
98#define XFS_IS_QUOTA_ON(mp) ((mp)->m_qflags & (XFS_UQUOTA_ACTIVE | \
99 XFS_GQUOTA_ACTIVE | \
100 XFS_PQUOTA_ACTIVE))
101#define XFS_IS_UQUOTA_ON(mp) ((mp)->m_qflags & XFS_UQUOTA_ACTIVE)
102#define XFS_IS_GQUOTA_ON(mp) ((mp)->m_qflags & XFS_GQUOTA_ACTIVE)
103#define XFS_IS_PQUOTA_ON(mp) ((mp)->m_qflags & XFS_PQUOTA_ACTIVE)
104
105
106
107
108
109
110#define XFS_QMOPT_DQALLOC 0x0000002
111#define XFS_QMOPT_UQUOTA 0x0000004
112#define XFS_QMOPT_PQUOTA 0x0000008
113#define XFS_QMOPT_FORCE_RES 0x0000010
114#define XFS_QMOPT_SBVERSION 0x0000040
115#define XFS_QMOPT_DOWARN 0x0000400
116#define XFS_QMOPT_DQREPAIR 0x0001000
117#define XFS_QMOPT_GQUOTA 0x0002000
118#define XFS_QMOPT_ENOSPC 0x0004000
119#define XFS_QMOPT_DQNEXT 0x0008000
120
121
122
123
124
125#define XFS_QMOPT_RES_REGBLKS 0x0010000
126#define XFS_QMOPT_RES_RTBLKS 0x0020000
127#define XFS_QMOPT_BCOUNT 0x0040000
128#define XFS_QMOPT_ICOUNT 0x0080000
129#define XFS_QMOPT_RTBCOUNT 0x0100000
130#define XFS_QMOPT_DELBCOUNT 0x0200000
131#define XFS_QMOPT_DELRTBCOUNT 0x0400000
132#define XFS_QMOPT_RES_INOS 0x0800000
133
134
135
136
137#define XFS_QMOPT_INHERIT 0x1000000
138
139
140
141
142#define XFS_TRANS_DQ_RES_BLKS XFS_QMOPT_RES_REGBLKS
143#define XFS_TRANS_DQ_RES_RTBLKS XFS_QMOPT_RES_RTBLKS
144#define XFS_TRANS_DQ_RES_INOS XFS_QMOPT_RES_INOS
145#define XFS_TRANS_DQ_BCOUNT XFS_QMOPT_BCOUNT
146#define XFS_TRANS_DQ_DELBCOUNT XFS_QMOPT_DELBCOUNT
147#define XFS_TRANS_DQ_ICOUNT XFS_QMOPT_ICOUNT
148#define XFS_TRANS_DQ_RTBCOUNT XFS_QMOPT_RTBCOUNT
149#define XFS_TRANS_DQ_DELRTBCOUNT XFS_QMOPT_DELRTBCOUNT
150
151
152#define XFS_QMOPT_QUOTALL \
153 (XFS_QMOPT_UQUOTA | XFS_QMOPT_PQUOTA | XFS_QMOPT_GQUOTA)
154#define XFS_QMOPT_RESBLK_MASK (XFS_QMOPT_RES_REGBLKS | XFS_QMOPT_RES_RTBLKS)
155
156extern int xfs_dqcheck(struct xfs_mount *mp, xfs_disk_dquot_t *ddq,
157 xfs_dqid_t id, uint type, uint flags, const char *str);
158extern int xfs_calc_dquots_per_chunk(unsigned int nbblks);
159
160#endif
161