quotactl
—
manipulate filesystem quotas
The
quotactl
()
call enables, disables and manipulates filesystem quotas. A quota control
command given by cmd operates on the given filename
path for the given user id. The
address of an optional command specific data structure,
addr, may be given; its interpretation is discussed
below with each command.
A command is composed of a primary command (see below) and a
command type used to interpret the id. Types are
supported for interpretation of user identifiers and group identifiers. The
specific commands are:
Q_QUOTAON
- Enable disk quotas for the filesystem specified by
path. The command type specifies the type of the
quotas being enabled. The addr argument specifies a
file from which to take the quotas. The quota file must exist; it is
normally created with the
quotacheck(8) program. The
id argument is unused. Only the super-user may turn
quotas on.
Q_QUOTAOFF
- Disable disk quotas for the filesystem specified by
path. The command type specifies the type of the
quotas being disabled. The addr and
id arguments are unused. Only the super-user may
turn quotas off.
Q_GETQUOTA
- Get disk quota limits and current usage for the user or group (as
determined by the command type) with identifier id.
Addr is a pointer to a struct
dqblk structure.
Q_SETQUOTA
- Set disk quota limits for the user or group (as determined by the command
type) with identifier id. Addr
is a pointer to a struct dqblk structure. The usage
fields of the dqblk structure are ignored. This call
is restricted to the super-user.
Q_SETUSE
- Set disk usage limits for the user or group (as determined by the command
type) with identifier id. Addr
is a pointer to a struct dqblk structure. Only the
usage fields are used. This call is restricted to the super-user.
Q_SYNC
- Update the on-disk copy of quota usages. The command type specifies which
type of quotas are to be updated. The id and
addr parameters are ignored.
Q_QUOTASTAT
- Get the enable status for the filesystem specified by
path. The command type specifies the type of the
quotas whose status is being queried. Addr is a
pointer to an integer. Upon return, this integer will hold a zero value if
quotas for the given type are not enabled and a non-zero value if quotas
for the given type are enabled. The id parameter is
ignored.
A successful call returns 0, otherwise the value -1 is returned
and the global variable errno indicates the reason for
the failure.
A quotactl
() call will fail if:
- [
ENOTSUP
]
- The kernel has not been compiled with the
QUOTA
option.
- [
EUSERS
]
- The quota table cannot be expanded.
- [
EINVAL
]
- Cmd or the command type is invalid.
- [
EACCES
]
- In
Q_QUOTAON
, the quota file is not a plain
file.
- [
EACCES
]
- Search permission is denied for a component of a path prefix.
- [
ENOTDIR
]
- A component of a path prefix was not a directory.
- [
ENAMETOOLONG
]
- A component of a pathname exceeded
{NAME_MAX}
characters, or an entire path name exceeded
{PATH_MAX}
characters.
- [
ENOENT
]
- A filename does not exist.
- [
ELOOP
]
- Too many symbolic links were encountered in translating a pathname.
- [
EROFS
]
- In
Q_QUOTAON
, the quota file resides on a
read-only filesystem.
- [
EIO
]
- An I/O error occurred while reading from or writing to a file containing
quotas.
- [
EFAULT
]
- An invalid addr was supplied; the associated
structure could not be copied in or out of the kernel.
- [
EFAULT
]
- Path points outside the process's allocated address
space.
- [
EPERM
]
- The call was privileged and the caller was not the super-user.
There should be some way to integrate this call with the resource
limit interface provided by
setrlimit(2) and
getrlimit(2).
The quotactl
() function call appeared in
4.3BSD-Reno.