quotactl2
Manipulate filesystem quotas
Usage
#include <sys/types.h> /* types needed by quota.h */
#include <sys/quota.h> /* for disk quotas */
int
quotactl(const char *path, int cmd, int id, char *addr);
Overview
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.
Return values
A successful call returns 0, otherwise the value -1 is returned and the global variable errno indicates the reason for the failure.
Errors
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.
Releases
155 releases since Mac OS X 10.0; the text changed 4 times.