Android-cuttlefish cvd tool
quota.h
Go to the documentation of this file.
1/*
2 *
3 * Header file for disk format of new quotafile format
4 *
5 * Copied essential definitions and structures for mkfs.f2fs from quotaio.h
6 *
7 * Aditya Kali <adityakali@google.com>
8 * Jan Kara <jack@suse.cz>
9 * Hyojun Kim <hyojun@google.com> - Ported to f2fs-tools
10 *
11 */
12#ifndef F2FS_QUOTA_H
13#define F2FS_QUOTA_H
14
20};
21
22#if MAXQUOTAS > 32
23#error "cannot have more than 32 quota types to fit in qtype_bits"
24#endif
25
26#define QUOTA_USR_BIT (1 << USRQUOTA)
27#define QUOTA_GRP_BIT (1 << GRPQUOTA)
28#define QUOTA_PRJ_BIT (1 << PRJQUOTA)
29#define QUOTA_ALL_BIT (QUOTA_USR_BIT | QUOTA_GRP_BIT | QUOTA_PRJ_BIT)
30
31/*
32 * Definitions of magics and versions of current quota files
33 */
34#define INITQMAGICS {\
35 0xd9c01f11, /* USRQUOTA */\
36 0xd9c01927, /* GRPQUOTA */\
37 0xd9c03f14 /* PRJQUOTA */\
38}
39
40#define V2_DQINFOOFF sizeof(struct v2_disk_dqheader) /* Offset of info header in file */
41
42#define MAX_IQ_TIME 604800 /* (7*24*60*60) 1 week */
43#define MAX_DQ_TIME 604800 /* (7*24*60*60) 1 week */
44
45#define QT_TREEOFF 1 /* Offset of tree in file in blocks */
46
47struct v2_disk_dqheader {
48 uint32_t dqh_magic; /* Magic number identifying file */
49 uint32_t dqh_version; /* File version */
50};
51
52static_assert(sizeof(struct v2_disk_dqheader) == 8, "");
53
54/* Header with type and version specific information */
55struct v2_disk_dqinfo {
56 uint32_t dqi_bgrace; /* Time before block soft limit becomes hard limit */
57 uint32_t dqi_igrace; /* Time before inode soft limit becomes hard limit */
58 uint32_t dqi_flags; /* Flags for quotafile (DQF_*) */
59 uint32_t dqi_blocks; /* Number of blocks in file */
60 uint32_t dqi_free_blk; /* Number of first free block in the list */
61 uint32_t dqi_free_entry; /* Number of block with at least one free entry */
62};
63
64static_assert(sizeof(struct v2_disk_dqinfo) == 24, "");
65
66struct v2r1_disk_dqblk {
67 __le32 dqb_id; /* id this quota applies to */
69 __le64 dqb_ihardlimit; /* absolute limit on allocated inodes */
70 __le64 dqb_isoftlimit; /* preferred inode limit */
71 __le64 dqb_curinodes; /* current # allocated inodes */
72 __le64 dqb_bhardlimit; /* absolute limit on disk space
73 * (in QUOTABLOCK_SIZE) */
74 __le64 dqb_bsoftlimit; /* preferred limit on disk space
75 * (in QUOTABLOCK_SIZE) */
76 __le64 dqb_curspace; /* current space occupied (in bytes) */
77 __le64 dqb_btime; /* time limit for excessive disk use */
78 __le64 dqb_itime; /* time limit for excessive inode use */
79};
80
81static_assert(sizeof(struct v2r1_disk_dqblk) == 72, "");
82
83#endif
__u64 __bitwise __le64
Definition: blkid_types.h:40
__u32 __bitwise __le32
Definition: blkid_types.h:39
@ USRQUOTA
Definition: quota.h:16
@ PRJQUOTA
Definition: quota.h:18
@ MAXQUOTAS
Definition: quota.h:19
@ GRPQUOTA
Definition: quota.h:17
quota_type
Definition: quotaio.h:37
Definition: quotaio_v2.h:18
uint32_t dqh_magic
Definition: quota.h:48
uint32_t dqh_version
Definition: quota.h:49
Definition: quotaio_v2.h:29
uint32_t dqi_free_blk
Definition: quota.h:60
uint32_t dqi_bgrace
Definition: quota.h:56
uint32_t dqi_free_entry
Definition: quota.h:61
uint32_t dqi_flags
Definition: quota.h:58
uint32_t dqi_igrace
Definition: quota.h:57
uint32_t dqi_blocks
Definition: quota.h:59
Definition: quotaio_v2.h:43
__le64 dqb_curspace
Definition: quotaio_v2.h:53
__le64 dqb_ihardlimit
Definition: quotaio_v2.h:46
__le64 dqb_itime
Definition: quotaio_v2.h:55
__le64 dqb_bsoftlimit
Definition: quotaio_v2.h:51
__le64 dqb_curinodes
Definition: quotaio_v2.h:48
__le64 dqb_bhardlimit
Definition: quotaio_v2.h:49
__le32 dqb_id
Definition: quotaio_v2.h:44
__le64 dqb_btime
Definition: quotaio_v2.h:54
__le64 dqb_isoftlimit
Definition: quotaio_v2.h:47
__le32 dqb_pad
Definition: quotaio_v2.h:45