Go to the documentation of this file.
18 #ifndef __XFS_QUOTA_H__
19 #define __XFS_QUOTA_H__
26 #define XFS_DQUOT_MAGIC 0x4451
27 #define XFS_DQUOT_VERSION (u_int8_t)0x01
86 #define XFS_DQ_USER 0x0001
87 #define XFS_DQ_PROJ 0x0002
88 #define XFS_DQ_GROUP 0x0004
89 #define XFS_DQ_DIRTY 0x0008
90 #define XFS_DQ_FREEING 0x0010
92 #define XFS_DQ_ALLTYPES (XFS_DQ_USER|XFS_DQ_PROJ|XFS_DQ_GROUP)
94 #define XFS_DQ_FLAGS \
95 { XFS_DQ_USER, "USER" }, \
96 { XFS_DQ_PROJ, "PROJ" }, \
97 { XFS_DQ_GROUP, "GROUP" }, \
98 { XFS_DQ_DIRTY, "DIRTY" }, \
99 { XFS_DQ_FREEING, "FREEING" }
105 #define XFS_DQUOT_LOGRES(mp) (sizeof(xfs_disk_dquot_t) * 3)
146 #define XFS_UQUOTA_ACCT 0x0001
147 #define XFS_UQUOTA_ENFD 0x0002
148 #define XFS_UQUOTA_CHKD 0x0004
149 #define XFS_PQUOTA_ACCT 0x0008
150 #define XFS_OQUOTA_ENFD 0x0010
151 #define XFS_OQUOTA_CHKD 0x0020
152 #define XFS_GQUOTA_ACCT 0x0040
157 #define XFS_ALL_QUOTA_ACCT \
158 (XFS_UQUOTA_ACCT | XFS_GQUOTA_ACCT | XFS_PQUOTA_ACCT)
159 #define XFS_ALL_QUOTA_ENFD (XFS_UQUOTA_ENFD | XFS_OQUOTA_ENFD)
160 #define XFS_ALL_QUOTA_CHKD (XFS_UQUOTA_CHKD | XFS_OQUOTA_CHKD)
162 #define XFS_IS_QUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_ALL_QUOTA_ACCT)
163 #define XFS_IS_UQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_UQUOTA_ACCT)
164 #define XFS_IS_PQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_PQUOTA_ACCT)
165 #define XFS_IS_GQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_GQUOTA_ACCT)
166 #define XFS_IS_UQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_UQUOTA_ENFD)
167 #define XFS_IS_OQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_OQUOTA_ENFD)
174 #define XFS_UQUOTA_ACTIVE 0x0100
175 #define XFS_PQUOTA_ACTIVE 0x0200
176 #define XFS_GQUOTA_ACTIVE 0x0400
177 #define XFS_ALL_QUOTA_ACTIVE \
178 (XFS_UQUOTA_ACTIVE | XFS_PQUOTA_ACTIVE | XFS_GQUOTA_ACTIVE)
184 #define XFS_IS_QUOTA_ON(mp) ((mp)->m_qflags & (XFS_UQUOTA_ACTIVE | \
185 XFS_GQUOTA_ACTIVE | \
187 #define XFS_IS_OQUOTA_ON(mp) ((mp)->m_qflags & (XFS_GQUOTA_ACTIVE | \
189 #define XFS_IS_UQUOTA_ON(mp) ((mp)->m_qflags & XFS_UQUOTA_ACTIVE)
190 #define XFS_IS_GQUOTA_ON(mp) ((mp)->m_qflags & XFS_GQUOTA_ACTIVE)
191 #define XFS_IS_PQUOTA_ON(mp) ((mp)->m_qflags & XFS_PQUOTA_ACTIVE)
198 #define XFS_QMOPT_DQALLOC 0x0000002
199 #define XFS_QMOPT_UQUOTA 0x0000004
200 #define XFS_QMOPT_PQUOTA 0x0000008
201 #define XFS_QMOPT_FORCE_RES 0x0000010
202 #define XFS_QMOPT_SBVERSION 0x0000040
203 #define XFS_QMOPT_DOWARN 0x0000400
204 #define XFS_QMOPT_DQREPAIR 0x0001000
205 #define XFS_QMOPT_GQUOTA 0x0002000
206 #define XFS_QMOPT_ENOSPC 0x0004000
212 #define XFS_QMOPT_RES_REGBLKS 0x0010000
213 #define XFS_QMOPT_RES_RTBLKS 0x0020000
214 #define XFS_QMOPT_BCOUNT 0x0040000
215 #define XFS_QMOPT_ICOUNT 0x0080000
216 #define XFS_QMOPT_RTBCOUNT 0x0100000
217 #define XFS_QMOPT_DELBCOUNT 0x0200000
218 #define XFS_QMOPT_DELRTBCOUNT 0x0400000
219 #define XFS_QMOPT_RES_INOS 0x0800000
224 #define XFS_QMOPT_INHERIT 0x1000000
229 #define XFS_TRANS_DQ_RES_BLKS XFS_QMOPT_RES_REGBLKS
230 #define XFS_TRANS_DQ_RES_RTBLKS XFS_QMOPT_RES_RTBLKS
231 #define XFS_TRANS_DQ_RES_INOS XFS_QMOPT_RES_INOS
232 #define XFS_TRANS_DQ_BCOUNT XFS_QMOPT_BCOUNT
233 #define XFS_TRANS_DQ_DELBCOUNT XFS_QMOPT_DELBCOUNT
234 #define XFS_TRANS_DQ_ICOUNT XFS_QMOPT_ICOUNT
235 #define XFS_TRANS_DQ_RTBCOUNT XFS_QMOPT_RTBCOUNT
236 #define XFS_TRANS_DQ_DELRTBCOUNT XFS_QMOPT_DELRTBCOUNT
239 #define XFS_QMOPT_QUOTALL \
240 (XFS_QMOPT_UQUOTA | XFS_QMOPT_PQUOTA | XFS_QMOPT_GQUOTA)
241 #define XFS_QMOPT_RESBLK_MASK (XFS_QMOPT_RES_REGBLKS | XFS_QMOPT_RES_RTBLKS)
253 #define XFS_NOT_DQATTACHED(mp, ip) ((XFS_IS_UQUOTA_ON(mp) &&\
254 (ip)->i_udquot == NULL) || \
255 (XFS_IS_OQUOTA_ON(mp) && \
256 (ip)->i_gdquot == NULL))
258 #define XFS_QM_NEED_QUOTACHECK(mp) \
259 ((XFS_IS_UQUOTA_ON(mp) && \
260 (mp->m_sb.sb_qflags & XFS_UQUOTA_CHKD) == 0) || \
261 (XFS_IS_GQUOTA_ON(mp) && \
262 ((mp->m_sb.sb_qflags & XFS_OQUOTA_CHKD) == 0 || \
263 (mp->m_sb.sb_qflags & XFS_PQUOTA_ACCT))) || \
264 (XFS_IS_PQUOTA_ON(mp) && \
265 ((mp->m_sb.sb_qflags & XFS_OQUOTA_CHKD) == 0 || \
266 (mp->m_sb.sb_qflags & XFS_GQUOTA_ACCT))))
268 #define XFS_MOUNT_QUOTA_SET1 (XFS_UQUOTA_ACCT|XFS_UQUOTA_ENFD|\
269 XFS_UQUOTA_CHKD|XFS_PQUOTA_ACCT|\
270 XFS_OQUOTA_ENFD|XFS_OQUOTA_CHKD)
272 #define XFS_MOUNT_QUOTA_SET2 (XFS_UQUOTA_ACCT|XFS_UQUOTA_ENFD|\
273 XFS_UQUOTA_CHKD|XFS_GQUOTA_ACCT|\
274 XFS_OQUOTA_ENFD|XFS_OQUOTA_CHKD)
276 #define XFS_MOUNT_QUOTA_ALL (XFS_UQUOTA_ACCT|XFS_UQUOTA_ENFD|\
277 XFS_UQUOTA_CHKD|XFS_PQUOTA_ACCT|\
278 XFS_OQUOTA_ENFD|XFS_OQUOTA_CHKD|\
286 typedef struct xfs_dqtrx {
289 ulong qt_blk_res_used;
291 ulong qt_ino_res_used;
292 long qt_bcount_delta;
293 long qt_delbcnt_delta;
294 long qt_icount_delta;
296 ulong qt_rtblk_res_used;
297 long qt_rtbcount_delta;
298 long qt_delrtb_delta;
301 #ifdef CONFIG_XFS_QUOTA
309 struct xfs_inode *,
long,
long,
uint);
342 #define xfs_trans_dup_dqinfo(tp, tp2)
343 #define xfs_trans_free_dqinfo(tp)
344 #define xfs_trans_mod_dquot_byino(tp, ip, fields, delta)
345 #define xfs_trans_apply_dquot_deltas(tp)
346 #define xfs_trans_unreserve_and_mod_dquots(tp)
348 struct xfs_inode *
ip,
long nblks,
long ninos,
uint flags)
358 #define xfs_qm_vop_create_dqattach(tp, ip, u, g)
359 #define xfs_qm_vop_rename_dqattach(it) (0)
360 #define xfs_qm_vop_chown(tp, ip, old, new) (NULL)
361 #define xfs_qm_vop_chown_reserve(tp, ip, u, g, fl) (0)
362 #define xfs_qm_dqattach(ip, fl) (0)
363 #define xfs_qm_dqattach_locked(ip, fl) (0)
364 #define xfs_qm_dqdetach(ip)
365 #define xfs_qm_dqrele(d)
366 #define xfs_qm_statvfs(ip, s)
367 #define xfs_qm_newmount(mp, a, b) (0)
368 #define xfs_qm_mount_quotas(mp)
369 #define xfs_qm_unmount(mp)
370 #define xfs_qm_unmount_quotas(mp)
373 #define xfs_trans_unreserve_quota_nblks(tp, ip, nblks, ninos, flags) \
374 xfs_trans_reserve_quota_nblks(tp, ip, -(nblks), -(ninos), flags)
375 #define xfs_trans_reserve_quota(tp, mp, ud, gd, nb, ni, f) \
376 xfs_trans_reserve_quota_bydquots(tp, mp, ud, gd, nb, ni, \
377 f | XFS_QMOPT_RES_REGBLKS)