xref: /aosp_15_r20/external/e2fsprogs/lib/support/quotaio_v2.h (revision 6a54128f25917bfc36a8a6e9d722c04a0b4641b6)
1*6a54128fSAndroid Build Coastguard Worker /*
2*6a54128fSAndroid Build Coastguard Worker  *
3*6a54128fSAndroid Build Coastguard Worker  *	Header file for disk format of new quotafile format
4*6a54128fSAndroid Build Coastguard Worker  *
5*6a54128fSAndroid Build Coastguard Worker  */
6*6a54128fSAndroid Build Coastguard Worker 
7*6a54128fSAndroid Build Coastguard Worker #ifndef GUARD_QUOTAIO_V2_H
8*6a54128fSAndroid Build Coastguard Worker #define GUARD_QUOTAIO_V2_H
9*6a54128fSAndroid Build Coastguard Worker 
10*6a54128fSAndroid Build Coastguard Worker #include <sys/types.h>
11*6a54128fSAndroid Build Coastguard Worker #include "quotaio.h"
12*6a54128fSAndroid Build Coastguard Worker 
13*6a54128fSAndroid Build Coastguard Worker /* Offset of info header in file */
14*6a54128fSAndroid Build Coastguard Worker #define V2_DQINFOOFF		sizeof(struct v2_disk_dqheader)
15*6a54128fSAndroid Build Coastguard Worker /* Supported version of quota-tree format */
16*6a54128fSAndroid Build Coastguard Worker #define V2_VERSION_R1 1
17*6a54128fSAndroid Build Coastguard Worker #define V2_VERSION_R0 0
18*6a54128fSAndroid Build Coastguard Worker 
19*6a54128fSAndroid Build Coastguard Worker struct v2_disk_dqheader {
20*6a54128fSAndroid Build Coastguard Worker 	__le32 dqh_magic;	/* Magic number identifying file */
21*6a54128fSAndroid Build Coastguard Worker 	__le32 dqh_version;	/* File version */
22*6a54128fSAndroid Build Coastguard Worker } __attribute__ ((packed));
23*6a54128fSAndroid Build Coastguard Worker 
24*6a54128fSAndroid Build Coastguard Worker /* Flags for version specific files */
25*6a54128fSAndroid Build Coastguard Worker #define V2_DQF_MASK  0x0000	/* Mask for all valid ondisk flags */
26*6a54128fSAndroid Build Coastguard Worker 
27*6a54128fSAndroid Build Coastguard Worker /* Header with type and version specific information */
28*6a54128fSAndroid Build Coastguard Worker struct v2_disk_dqinfo {
29*6a54128fSAndroid Build Coastguard Worker 	__le32 dqi_bgrace;	/* Time before block soft limit becomes
30*6a54128fSAndroid Build Coastguard Worker 				 * hard limit */
31*6a54128fSAndroid Build Coastguard Worker 	__le32 dqi_igrace;	/* Time before inode soft limit becomes
32*6a54128fSAndroid Build Coastguard Worker 				 * hard limit */
33*6a54128fSAndroid Build Coastguard Worker 	__le32 dqi_flags;	/* Flags for quotafile (DQF_*) */
34*6a54128fSAndroid Build Coastguard Worker 	__le32 dqi_blocks;	/* Number of blocks in file */
35*6a54128fSAndroid Build Coastguard Worker 	__le32 dqi_free_blk;	/* Number of first free block in the list */
36*6a54128fSAndroid Build Coastguard Worker 	__le32 dqi_free_entry;	/* Number of block with at least one
37*6a54128fSAndroid Build Coastguard Worker 					 * free entry */
38*6a54128fSAndroid Build Coastguard Worker } __attribute__ ((packed));
39*6a54128fSAndroid Build Coastguard Worker 
40*6a54128fSAndroid Build Coastguard Worker struct v2r0_disk_dqblk {
41*6a54128fSAndroid Build Coastguard Worker 	__le32 dqb_id;	/* id this quota applies to */
42*6a54128fSAndroid Build Coastguard Worker 	__le32 dqb_ihardlimit;	/* absolute limit on allocated inodes */
43*6a54128fSAndroid Build Coastguard Worker 	__le32 dqb_isoftlimit;	/* preferred inode limit */
44*6a54128fSAndroid Build Coastguard Worker 	__le32 dqb_curinodes;	/* current # allocated inodes */
45*6a54128fSAndroid Build Coastguard Worker 	__le32 dqb_bhardlimit;	/* absolute limit on disk space
46*6a54128fSAndroid Build Coastguard Worker 					 * (in QUOTABLOCK_SIZE) */
47*6a54128fSAndroid Build Coastguard Worker 	__le32 dqb_bsoftlimit;	/* preferred limit on disk space
48*6a54128fSAndroid Build Coastguard Worker 					 * (in QUOTABLOCK_SIZE) */
49*6a54128fSAndroid Build Coastguard Worker 	__le64 dqb_curspace;	/* current space occupied (in bytes) */
50*6a54128fSAndroid Build Coastguard Worker 	__le64 dqb_btime;	/* time limit for excessive disk use */
51*6a54128fSAndroid Build Coastguard Worker 	__le64 dqb_itime;	/* time limit for excessive inode use */
52*6a54128fSAndroid Build Coastguard Worker } __attribute__ ((packed));
53*6a54128fSAndroid Build Coastguard Worker 
54*6a54128fSAndroid Build Coastguard Worker struct v2r1_disk_dqblk {
55*6a54128fSAndroid Build Coastguard Worker 	__le32 dqb_id;	/* id this quota applies to */
56*6a54128fSAndroid Build Coastguard Worker 	__le32 dqb_pad;
57*6a54128fSAndroid Build Coastguard Worker 	__le64 dqb_ihardlimit;	/* absolute limit on allocated inodes */
58*6a54128fSAndroid Build Coastguard Worker 	__le64 dqb_isoftlimit;	/* preferred inode limit */
59*6a54128fSAndroid Build Coastguard Worker 	__le64 dqb_curinodes;	/* current # allocated inodes */
60*6a54128fSAndroid Build Coastguard Worker 	__le64 dqb_bhardlimit;	/* absolute limit on disk space
61*6a54128fSAndroid Build Coastguard Worker 					 * (in QUOTABLOCK_SIZE) */
62*6a54128fSAndroid Build Coastguard Worker 	__le64 dqb_bsoftlimit;	/* preferred limit on disk space
63*6a54128fSAndroid Build Coastguard Worker 					 * (in QUOTABLOCK_SIZE) */
64*6a54128fSAndroid Build Coastguard Worker 	__le64 dqb_curspace;	/* current space occupied (in bytes) */
65*6a54128fSAndroid Build Coastguard Worker 	__le64 dqb_btime;	/* time limit for excessive disk use */
66*6a54128fSAndroid Build Coastguard Worker 	__le64 dqb_itime;	/* time limit for excessive inode use */
67*6a54128fSAndroid Build Coastguard Worker } __attribute__ ((packed));
68*6a54128fSAndroid Build Coastguard Worker 
69*6a54128fSAndroid Build Coastguard Worker #endif
70