Whamcloud - gitweb
libquota: fix get_dq()
[tools/e2fsprogs.git] / lib / quota / quotaio_v2.h
1 /*
2  *
3  *      Header file for disk format of new quotafile format
4  *
5  */
6
7 #ifndef GUARD_QUOTAIO_V2_H
8 #define GUARD_QUOTAIO_V2_H
9
10 #include <sys/types.h>
11 #include "quota.h"
12
13 /* Offset of info header in file */
14 #define V2_DQINFOOFF            sizeof(struct v2_disk_dqheader)
15 #define INIT_V2_VERSIONS        { 1, 1}
16
17 struct v2_disk_dqheader {
18         u_int32_t dqh_magic;    /* Magic number identifying file */
19         u_int32_t dqh_version;  /* File version */
20 } __attribute__ ((packed));
21
22 /* Flags for version specific files */
23 #define V2_DQF_MASK  0x0000     /* Mask for all valid ondisk flags */
24
25 /* Header with type and version specific information */
26 struct v2_disk_dqinfo {
27         u_int32_t dqi_bgrace;   /* Time before block soft limit becomes
28                                  * hard limit */
29         u_int32_t dqi_igrace;   /* Time before inode soft limit becomes
30                                  * hard limit */
31         u_int32_t dqi_flags;    /* Flags for quotafile (DQF_*) */
32         u_int32_t dqi_blocks;   /* Number of blocks in file */
33         u_int32_t dqi_free_blk; /* Number of first free block in the list */
34         u_int32_t dqi_free_entry;       /* Number of block with at least one
35                                          * free entry */
36 } __attribute__ ((packed));
37
38 /* Structure of quota for one user on disk */
39 struct v2r0_disk_dqblk {
40         u_int32_t dqb_id;       /* id this quota applies to */
41         u_int32_t dqb_ihardlimit;       /* absolute limit on allocated inodes */
42         u_int32_t dqb_isoftlimit;       /* preferred inode limit */
43         u_int32_t dqb_curinodes;        /* current # allocated inodes */
44         u_int32_t dqb_bhardlimit;       /* absolute limit on disk space
45                                          * (in QUOTABLOCK_SIZE) */
46         u_int32_t dqb_bsoftlimit;       /* preferred limit on disk space
47                                          * (in QUOTABLOCK_SIZE) */
48         u_int64_t dqb_curspace; /* current space occupied (in bytes) */
49         u_int64_t dqb_btime;    /* time limit for excessive disk use */
50         u_int64_t dqb_itime;    /* time limit for excessive inode use */
51 } __attribute__ ((packed));
52
53 struct v2r1_disk_dqblk {
54         u_int32_t dqb_id;       /* id this quota applies to */
55         u_int32_t dqb_pad;
56         u_int64_t dqb_ihardlimit;       /* absolute limit on allocated inodes */
57         u_int64_t dqb_isoftlimit;       /* preferred inode limit */
58         u_int64_t dqb_curinodes;        /* current # allocated inodes */
59         u_int64_t dqb_bhardlimit;       /* absolute limit on disk space
60                                          * (in QUOTABLOCK_SIZE) */
61         u_int64_t dqb_bsoftlimit;       /* preferred limit on disk space
62                                          * (in QUOTABLOCK_SIZE) */
63         u_int64_t dqb_curspace; /* current space occupied (in bytes) */
64         u_int64_t dqb_btime;    /* time limit for excessive disk use */
65         u_int64_t dqb_itime;    /* time limit for excessive inode use */
66 } __attribute__ ((packed));
67
68 /* Structure of quota for communication with kernel */
69 struct v2_kern_dqblk {
70         unsigned int dqb_ihardlimit;
71         unsigned int dqb_isoftlimit;
72         unsigned int dqb_curinodes;
73         unsigned int dqb_bhardlimit;
74         unsigned int dqb_bsoftlimit;
75         qsize_t dqb_curspace;
76         time_t dqb_btime;
77         time_t dqb_itime;
78 };
79
80 /* Structure of quotafile info for communication with kernel (obsolete) */
81 struct v2_kern_dqinfo {
82         unsigned int dqi_bgrace;
83         unsigned int dqi_igrace;
84         unsigned int dqi_flags;
85         unsigned int dqi_blocks;
86         unsigned int dqi_free_blk;
87         unsigned int dqi_free_entry;
88 };
89
90 /* Structure with gathered statistics from kernel */
91 struct v2_dqstats {
92         u_int32_t lookups;
93         u_int32_t drops;
94         u_int32_t reads;
95         u_int32_t writes;
96         u_int32_t cache_hits;
97         u_int32_t allocated_dquots;
98         u_int32_t free_dquots;
99         u_int32_t syncs;
100         u_int32_t version;
101 };
102
103 #endif