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