1ccd14b9c2
There is going to be a new version of quota format having 64-bit quota limits and a new quota format for OCFS2. They are both going to use the same tree structure as VFSv0 quota format. So split out tree handling into a separate file and make size of leaf blocks, amount of space usable in each block (needed for checksumming) and structures contained in them configurable so that the code can be shared. Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Mark Fasheh <mfasheh@suse.com>
60 lines
1.9 KiB
C
60 lines
1.9 KiB
C
/*
|
|
* Definitions of structures for vfsv0 quota format
|
|
*/
|
|
|
|
#ifndef _LINUX_QUOTAIO_V2_H
|
|
#define _LINUX_QUOTAIO_V2_H
|
|
|
|
#include <linux/types.h>
|
|
#include <linux/quota.h>
|
|
|
|
/*
|
|
* Definitions of magics and versions of current quota files
|
|
*/
|
|
#define V2_INITQMAGICS {\
|
|
0xd9c01f11, /* USRQUOTA */\
|
|
0xd9c01927 /* GRPQUOTA */\
|
|
}
|
|
|
|
#define V2_INITQVERSIONS {\
|
|
0, /* USRQUOTA */\
|
|
0 /* GRPQUOTA */\
|
|
}
|
|
|
|
/* First generic header */
|
|
struct v2_disk_dqheader {
|
|
__le32 dqh_magic; /* Magic number identifying file */
|
|
__le32 dqh_version; /* File version */
|
|
};
|
|
|
|
/*
|
|
* The following structure defines the format of the disk quota file
|
|
* (as it appears on disk) - the file is a radix tree whose leaves point
|
|
* to blocks of these structures.
|
|
*/
|
|
struct v2_disk_dqblk {
|
|
__le32 dqb_id; /* id this quota applies to */
|
|
__le32 dqb_ihardlimit; /* absolute limit on allocated inodes */
|
|
__le32 dqb_isoftlimit; /* preferred inode limit */
|
|
__le32 dqb_curinodes; /* current # allocated inodes */
|
|
__le32 dqb_bhardlimit; /* absolute limit on disk space (in QUOTABLOCK_SIZE) */
|
|
__le32 dqb_bsoftlimit; /* preferred limit on disk space (in QUOTABLOCK_SIZE) */
|
|
__le64 dqb_curspace; /* current space occupied (in bytes) */
|
|
__le64 dqb_btime; /* time limit for excessive disk use */
|
|
__le64 dqb_itime; /* time limit for excessive inode use */
|
|
};
|
|
|
|
/* Header with type and version specific information */
|
|
struct v2_disk_dqinfo {
|
|
__le32 dqi_bgrace; /* Time before block soft limit becomes hard limit */
|
|
__le32 dqi_igrace; /* Time before inode soft limit becomes hard limit */
|
|
__le32 dqi_flags; /* Flags for quotafile (DQF_*) */
|
|
__le32 dqi_blocks; /* Number of blocks in file */
|
|
__le32 dqi_free_blk; /* Number of first free block in the list */
|
|
__le32 dqi_free_entry; /* Number of block with at least one free entry */
|
|
};
|
|
|
|
#define V2_DQINFOOFF sizeof(struct v2_disk_dqheader) /* Offset of info header in file */
|
|
#define V2_DQBLKSIZE_BITS 10 /* Size of leaf block in tree */
|
|
|
|
#endif /* _LINUX_QUOTAIO_V2_H */
|