version 1.25, 2007/07/10 09:50:08 |
version 1.25.62.1, 2011/06/06 09:10:18 |
|
|
#define _UFS_UFS_QUOTA_H_ |
#define _UFS_UFS_QUOTA_H_ |
|
|
/* |
/* |
* Definitions for disk quotas imposed on the average user |
* These definitions are common to the original disk quota implementation |
* (big brother finally hits UNIX). |
* (quota1) and the newer implementation (quota2) |
* |
|
* The following constants define the amount of time given a user before the |
|
* soft limits are treated as hard limits (usually resulting in an allocation |
|
* failure). The timer is started when the user crosses their soft limit, it |
|
* is reset when they go below their soft limit. |
|
*/ |
*/ |
#define MAX_IQ_TIME (7*24*60*60) /* seconds in 1 week */ |
|
#define MAX_DQ_TIME (7*24*60*60) /* seconds in 1 week */ |
|
|
|
/* |
/* |
* The following constants define the usage of the quota file array in the |
* The following constants define the usage of the quota file array in the |
|
|
#define USRQUOTA 0 /* element used for user quotas */ |
#define USRQUOTA 0 /* element used for user quotas */ |
#define GRPQUOTA 1 /* element used for group quotas */ |
#define GRPQUOTA 1 /* element used for group quotas */ |
|
|
/* |
|
* Definitions for the default names of the quotas files. |
|
*/ |
|
#define INITQFNAMES { \ |
|
"user", /* USRQUOTA */ \ |
|
"group", /* GRPQUOTA */ \ |
|
"undefined", \ |
|
} |
|
#define QUOTAFILENAME "quota" |
|
#define QUOTAGROUP "operator" |
|
|
|
/* |
#if !defined(HAVE_NBTOOL_CONFIG_H) |
* Command definitions for the 'quotactl' system call. The commands are |
#include <quota/quotaprop.h> |
* broken into a main command defined below and a subcommand that is used |
__inline static int __unused |
* to convey the type of quota that is being manipulated (see above). |
ufsclass2qtype(int class) |
*/ |
{ |
#define SUBCMDMASK 0x00ff |
switch(class) { |
#define SUBCMDSHIFT 8 |
case QUOTA_CLASS_USER: |
#define QCMD(cmd, type) (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK)) |
return USRQUOTA; |
|
case QUOTA_CLASS_GROUP: |
#define Q_QUOTAON 0x0100 /* enable quotas */ |
return GRPQUOTA; |
#define Q_QUOTAOFF 0x0200 /* disable quotas */ |
default: |
#define Q_GETQUOTA 0x0300 /* get limits and usage */ |
return -1; |
#define Q_SETQUOTA 0x0400 /* set limits and usage */ |
} |
#define Q_SETUSE 0x0500 /* set usage */ |
} |
#define Q_SYNC 0x0600 /* sync disk copy of a filesystems quotas */ |
|
|
|
/* |
static __inline int __unused |
* The following structure defines the format of the disk quota file |
qtype2ufsclass(int type) |
* (as it appears on disk) - the file is an array of these structures |
{ |
* indexed by user or group number. The setquota system call establishes |
switch(type) { |
* the vnode for each quota file (a pointer is retained in the ufsmount |
case USRQUOTA: |
* structure). |
return QUOTA_CLASS_USER; |
*/ |
case GRPQUOTA: |
struct dqblk { |
return QUOTA_CLASS_GROUP; |
u_int32_t dqb_bhardlimit; /* absolute limit on disk blks alloc */ |
default: |
u_int32_t dqb_bsoftlimit; /* preferred limit on disk blks */ |
return -1; |
u_int32_t dqb_curblocks; /* current block count */ |
} |
u_int32_t dqb_ihardlimit; /* maximum # allocated inodes + 1 */ |
} |
u_int32_t dqb_isoftlimit; /* preferred inode limit */ |
#endif /* !defined(HAVE_NBTOOL_CONFIG_H) */ |
u_int32_t dqb_curinodes; /* current # allocated inodes */ |
|
int32_t dqb_btime; /* time limit for excessive disk use */ |
|
int32_t dqb_itime; /* time limit for excessive files */ |
|
}; |
|
|
|
#ifdef _KERNEL |
#ifdef _KERNEL |
|
|
Line 114 void dqinit(void); |
|
Line 92 void dqinit(void); |
|
void dqreinit(void); |
void dqreinit(void); |
void dqdone(void); |
void dqdone(void); |
__END_DECLS |
__END_DECLS |
#else |
|
__BEGIN_DECLS |
|
int quotactl(const char *, int , int, void *); |
|
__END_DECLS |
|
#endif /* _KERNEL */ |
#endif /* _KERNEL */ |
|
|
#endif /* !_UFS_UFS_QUOTA_H_ */ |
#endif /* !_UFS_UFS_QUOTA_H_ */ |