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