Originální popis anglicky:
quotactl - manipulate disk quota
Návod, kniha: Linux Programmer's Manual
#include <sys/types.h>
#include <sys/quota.h>
int quotactl(int cmd, const char *special, int
id, caddr_t addr);
#include <linux/unistd.h>
_syscall4(int, quotactl, int, cmd, const char *,
special , int, id, caddr_t,
addr);
The quota system defines for each user and/or group a soft limit and a hard
limit bounding the amount of disk space that can be used on a given file
system. The hard limit cannot be crossed. The soft limit can be crossed, but
warnings will ensue. Moreover, the user cannot be above the soft limit for
more than one week (by default) at a time: after this week the soft limit
counts as hard limit.
The
quotactl system call manipulates these quota. Its first argument is
of the form
QCMD(subcmd,type) where
type is either
USRQUOTA or
GRPQUOTA (for user quota and
group quota, respectively), and
subcmd is described below.
The second argument
special is the block special device these quota apply
to. It must be mounted.
The third argument
id is the user or group ID these quota apply to (when
relevant).
The fourth argument
addr is the address of a data structure, depending on
the command.
The
subcmd is one of
- Q_QUOTAON
- Enable quota. The addr argument is the pathname of
the file containing the quota for the filesystem.
- Q_QUOTAOFF
- Disable quota.
- Q_GETQUOTA
- Get limits and current usage of disk space. The addr
argument is a pointer to a dqblk structure (defined in
<sys/quota.h>).
- Q_SETQUOTA
- Set limits and current usage; addr is as
before.
- Q_SETQLIM
- Set limits; addr is as before.
- Q_SETUSE
- Set usage.
- Q_SYNC
- Sync disk copy of a filesystem's quota.
- Q_GETSTATS
- Get collected stats.
On success,
quotactl returns 0. On error, -1 is returned, and
errno is set appropriately.
- EACCES
- The quota file is not an ordinary file.
- EBUSY
- Q_QUOTAON was asked, but quota were enabled
already.
- EFAULT
- Bad addr value.
- EINVAL
- type is not a known quota type. Or, special
could not be found.
- EIO
- Cannot read or write the quota file.
- EMFILE
- Too many open files: cannot open quota file.
- ENODEV
- special cannot be found in the mount table.
- ENOPKG
- The kernel was compiled without quota support.
- ENOTBLK
- special is not a block special device.
- EPERM
- The process was not root (for the file system), and
Q_GETQUOTA was asked for another id than that of the process
itself, or anything other than Q_GETSTATS or Q_SYNC was
asked.
- ESRCH
- Q_GETQUOTA or Q_SETQUOTA or Q_SETUSE
or Q_SETQLIM was asked for a file system that didn't have quota
enabled.
BSD
quota(1),
getrlimit(2),
setrlimit(2),
ulimit(3),
quotacheck(8),
quotaon(8)