1
2
3
4
5
6#ifndef __XFS_QUOTA_DEFS_H__
7#define __XFS_QUOTA_DEFS_H__
8
9
10
11
12
13
14
15
16
17
18typedef uint64_t xfs_qcnt_t;
19typedef uint16_t xfs_qwarncnt_t;
20
21typedef uint8_t xfs_dqtype_t;
22
23#define XFS_DQTYPE_STRINGS \
24 { XFS_DQTYPE_USER, "USER" }, \
25 { XFS_DQTYPE_PROJ, "PROJ" }, \
26 { XFS_DQTYPE_GROUP, "GROUP" }
27
28
29
30
31#define XFS_DQFLAG_DIRTY (1 << 0)
32#define XFS_DQFLAG_FREEING (1 << 1)
33
34#define XFS_DQFLAG_STRINGS \
35 { XFS_DQFLAG_DIRTY, "DIRTY" }, \
36 { XFS_DQFLAG_FREEING, "FREEING" }
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59#define XFS_DQUOT_LOGRES(mp) \
60 ((sizeof(struct xfs_dq_logformat) + sizeof(struct xfs_disk_dquot)) * 6)
61
62#define XFS_IS_QUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_ALL_QUOTA_ACCT)
63#define XFS_IS_UQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_UQUOTA_ACCT)
64#define XFS_IS_PQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_PQUOTA_ACCT)
65#define XFS_IS_GQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_GQUOTA_ACCT)
66#define XFS_IS_UQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_UQUOTA_ENFD)
67#define XFS_IS_GQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_GQUOTA_ENFD)
68#define XFS_IS_PQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_PQUOTA_ENFD)
69
70
71
72
73
74
75#define XFS_UQUOTA_ACTIVE 0x1000
76#define XFS_GQUOTA_ACTIVE 0x2000
77#define XFS_PQUOTA_ACTIVE 0x4000
78#define XFS_ALL_QUOTA_ACTIVE \
79 (XFS_UQUOTA_ACTIVE | XFS_GQUOTA_ACTIVE | XFS_PQUOTA_ACTIVE)
80
81
82
83
84
85#define XFS_IS_QUOTA_ON(mp) ((mp)->m_qflags & (XFS_UQUOTA_ACTIVE | \
86 XFS_GQUOTA_ACTIVE | \
87 XFS_PQUOTA_ACTIVE))
88#define XFS_IS_UQUOTA_ON(mp) ((mp)->m_qflags & XFS_UQUOTA_ACTIVE)
89#define XFS_IS_GQUOTA_ON(mp) ((mp)->m_qflags & XFS_GQUOTA_ACTIVE)
90#define XFS_IS_PQUOTA_ON(mp) ((mp)->m_qflags & XFS_PQUOTA_ACTIVE)
91
92
93
94
95
96
97#define XFS_QMOPT_UQUOTA 0x0000004
98#define XFS_QMOPT_PQUOTA 0x0000008
99#define XFS_QMOPT_FORCE_RES 0x0000010
100#define XFS_QMOPT_SBVERSION 0x0000040
101#define XFS_QMOPT_GQUOTA 0x0002000
102
103
104
105
106
107#define XFS_QMOPT_RES_REGBLKS 0x0010000
108#define XFS_QMOPT_RES_RTBLKS 0x0020000
109#define XFS_QMOPT_BCOUNT 0x0040000
110#define XFS_QMOPT_ICOUNT 0x0080000
111#define XFS_QMOPT_RTBCOUNT 0x0100000
112#define XFS_QMOPT_DELBCOUNT 0x0200000
113#define XFS_QMOPT_DELRTBCOUNT 0x0400000
114#define XFS_QMOPT_RES_INOS 0x0800000
115
116
117
118
119#define XFS_QMOPT_INHERIT 0x1000000
120
121
122
123
124#define XFS_TRANS_DQ_RES_BLKS XFS_QMOPT_RES_REGBLKS
125#define XFS_TRANS_DQ_RES_RTBLKS XFS_QMOPT_RES_RTBLKS
126#define XFS_TRANS_DQ_RES_INOS XFS_QMOPT_RES_INOS
127#define XFS_TRANS_DQ_BCOUNT XFS_QMOPT_BCOUNT
128#define XFS_TRANS_DQ_DELBCOUNT XFS_QMOPT_DELBCOUNT
129#define XFS_TRANS_DQ_ICOUNT XFS_QMOPT_ICOUNT
130#define XFS_TRANS_DQ_RTBCOUNT XFS_QMOPT_RTBCOUNT
131#define XFS_TRANS_DQ_DELRTBCOUNT XFS_QMOPT_DELRTBCOUNT
132
133
134#define XFS_QMOPT_QUOTALL \
135 (XFS_QMOPT_UQUOTA | XFS_QMOPT_PQUOTA | XFS_QMOPT_GQUOTA)
136#define XFS_QMOPT_RESBLK_MASK (XFS_QMOPT_RES_REGBLKS | XFS_QMOPT_RES_RTBLKS)
137
138extern xfs_failaddr_t xfs_dquot_verify(struct xfs_mount *mp,
139 struct xfs_disk_dquot *ddq, xfs_dqid_t id);
140extern xfs_failaddr_t xfs_dqblk_verify(struct xfs_mount *mp,
141 struct xfs_dqblk *dqb, xfs_dqid_t id);
142extern int xfs_calc_dquots_per_chunk(unsigned int nbblks);
143extern void xfs_dqblk_repair(struct xfs_mount *mp, struct xfs_dqblk *dqb,
144 xfs_dqid_t id, xfs_dqtype_t type);
145
146#endif
147