1#ifndef _SYS_QUOTA_H 2#define _SYS_QUOTA_H 3 4#ifdef __cplusplus 5extern "C" { 6#endif 7 8#include <stdint.h> 9 10#define _LINUX_QUOTA_VERSION 2 11 12#define dbtob(num) ((num) << 10) 13#define btodb(num) ((num) >> 10) 14#define fs_to_dq_blocks(num, blksize) (((num) * (blksize)) / 1024) 15 16#define MAX_IQ_TIME 604800 17#define MAX_DQ_TIME 604800 18 19#define MAXQUOTAS 2 20#define USRQUOTA 0 21#define GRPQUOTA 1 22 23#define INITQFNAMES { "user", "group", "undefined" }; 24 25#define QUOTAFILENAME "quota" 26#define QUOTAGROUP "staff" 27 28#define NR_DQHASH 43 29#define NR_DQUOTS 256 30 31#define SUBCMDMASK 0x00ff 32#define SUBCMDSHIFT 8 33#define QCMD(cmd, type) (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK)) 34 35#define Q_SYNC 0x800001 36#define Q_QUOTAON 0x800002 37#define Q_QUOTAOFF 0x800003 38#define Q_GETFMT 0x800004 39#define Q_GETINFO 0x800005 40#define Q_SETINFO 0x800006 41#define Q_GETQUOTA 0x800007 42#define Q_SETQUOTA 0x800008 43 44#define QFMT_VFS_OLD 1 45#define QFMT_VFS_V0 2 46#define QFMT_OCFS2 3 47#define QFMT_VFS_V1 4 48 49#define QIF_BLIMITS 1 50#define QIF_SPACE 2 51#define QIF_ILIMITS 4 52#define QIF_INODES 8 53#define QIF_BTIME 16 54#define QIF_ITIME 32 55#define QIF_LIMITS (QIF_BLIMITS | QIF_ILIMITS) 56#define QIF_USAGE (QIF_SPACE | QIF_INODES) 57#define QIF_TIMES (QIF_BTIME | QIF_ITIME) 58#define QIF_ALL (QIF_LIMITS | QIF_USAGE | QIF_TIMES) 59 60struct dqblk { 61 uint64_t dqb_bhardlimit; 62 uint64_t dqb_bsoftlimit; 63 uint64_t dqb_curspace; 64 uint64_t dqb_ihardlimit; 65 uint64_t dqb_isoftlimit; 66 uint64_t dqb_curinodes; 67 uint64_t dqb_btime; 68 uint64_t dqb_itime; 69 uint32_t dqb_valid; 70}; 71 72#define dq_bhardlimit dq_dqb.dqb_bhardlimit 73#define dq_bsoftlimit dq_dqb.dqb_bsoftlimit 74#define dq_curspace dq_dqb.dqb_curspace 75#define dq_valid dq_dqb.dqb_valid 76#define dq_ihardlimit dq_dqb.dqb_ihardlimit 77#define dq_isoftlimit dq_dqb.dqb_isoftlimit 78#define dq_curinodes dq_dqb.dqb_curinodes 79#define dq_btime dq_dqb.dqb_btime 80#define dq_itime dq_dqb.dqb_itime 81 82#define dqoff(UID) ((long long)(UID) * sizeof (struct dqblk)) 83 84#define IIF_BGRACE 1 85#define IIF_IGRACE 2 86#define IIF_FLAGS 4 87#define IIF_ALL (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS) 88 89struct dqinfo { 90 uint64_t dqi_bgrace; 91 uint64_t dqi_igrace; 92 uint32_t dqi_flags; 93 uint32_t dqi_valid; 94}; 95 96int quotactl(int, const char *, int, char *); 97 98#ifdef __cplusplus 99} 100#endif 101 102#endif 103