*
* Header file for disk format of new quotafile format
*
* Copied essential definitions and structures for mkfs.f2fs from quotaio.h
*
* Aditya Kali <adityakali@google.com>
* Jan Kara <jack@suse.cz>
* Hyojun Kim <hyojun@google.com> - Ported to f2fs-tools
*
*/
#ifndef F2FS_QUOTA_H
#define F2FS_QUOTA_H
enum quota_type {
USRQUOTA = 0,
GRPQUOTA = 1,
PRJQUOTA = 2,
MAXQUOTAS = 3,
};
#if MAXQUOTAS > 32
#error "cannot have more than 32 quota types to fit in qtype_bits"
#endif
#define QUOTA_USR_BIT (1 << USRQUOTA)
#define QUOTA_GRP_BIT (1 << GRPQUOTA)
#define QUOTA_PRJ_BIT (1 << PRJQUOTA)
#define QUOTA_ALL_BIT (QUOTA_USR_BIT | QUOTA_GRP_BIT | QUOTA_PRJ_BIT)
* Definitions of magics and versions of current quota files
*/
#define INITQMAGICS {\
0xd9c01f11, \
0xd9c01927, \
0xd9c03f14 \
}
#define V2_DQINFOOFF sizeof(struct v2_disk_dqheader)
#define MAX_IQ_TIME 604800
#define MAX_DQ_TIME 604800
#define QT_TREEOFF 1
struct v2_disk_dqheader {
uint32_t dqh_magic;
uint32_t dqh_version;
};
static_assert(sizeof(struct v2_disk_dqheader) == 8, "");
struct v2_disk_dqinfo {
uint32_t dqi_bgrace;
uint32_t dqi_igrace;
uint32_t dqi_flags;
uint32_t dqi_blocks;
uint32_t dqi_free_blk;
uint32_t dqi_free_entry;
};
static_assert(sizeof(struct v2_disk_dqinfo) == 24, "");
struct v2r1_disk_dqblk {
__le32 dqb_id;
__le32 dqb_pad;
__le64 dqb_ihardlimit;
__le64 dqb_isoftlimit;
__le64 dqb_curinodes;
__le64 dqb_bhardlimit;
* (in QUOTABLOCK_SIZE) */
__le64 dqb_bsoftlimit;
* (in QUOTABLOCK_SIZE) */
__le64 dqb_curspace;
__le64 dqb_btime;
__le64 dqb_itime;
};
static_assert(sizeof(struct v2r1_disk_dqblk) == 72, "");
#endif