SYNOPSISIn sys/types.h In ufs/ufs/quota.h Ft int Fn quotactl const char *path int cmd int id void *addr
DESCRIPTIONThe Fn quotactl system call enables, disables and manipulates file system quotas. A quota control command given by Fa cmd operates on the given filename Fa path for the given user or group Fa id . (NOTE: One should use the QCMD macro defined in In ufs/ufs/quota.h to formulate the value for Fa cmd . ) The address of an optional command specific data structure, Fa addr , may be given; its interpretation is discussed below with each command.
For commands that use the Fa id identifier, it must be either -1 or any positive value. The value of -1 indicates that the current UID or GID should be used. Any other negative value will return an error.
Currently quotas are supported only for the ``ufs'' file system. For ``ufs'' a command is composed of a primary command (see below) and a command type used to interpret the Fa id . Types are supported for interpretation of user identifiers (USRQUOTA) and group identifiers (GRPQUOTA). The ``ufs'' specific commands are:
- Enable disk quotas for the file system specified by Fa path . The command type specifies the type of the quotas being enabled. The Fa 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 Fa id argument is unused. Only the super-user may turn quotas on.
- Disable disk quotas for the file system specified by Fa path . The command type specifies the type of the quotas being disabled. The Fa addr and Fa id arguments are unused. Only the super-user may turn quotas off.
- Get the wordsize used to represent the quotas for the user or group (as determined by the command type). Possible values are 32 for the old-style quota file and 64 for the new-style quota file. The Fa addr argument is a pointer to an integer into which the size is stored. The identifier Fa id is not used.
- Get disk quota limits and current usage for the user or group (as determined by the command type) with identifier Fa id . The Fa addr argument is a pointer to a Fa struct dqblk structure (defined in In ufs/ufs/quota.h ) .
- Set disk quota limits for the user or group (as determined by the command type) with identifier Fa id . The Fa addr argument is a pointer to a Fa struct dqblk structure (defined in In ufs/ufs/quota.h ) . The usage fields of the Fa dqblk structure are ignored. This system call is restricted to the super-user.
- Set disk usage limits for the user or group (as determined by the command type) with identifier Fa id . The Fa addr argument is a pointer to a Fa struct dqblk structure (defined in In ufs/ufs/quota.h ) . Only the usage fields are used. This system call is restricted to the super-user.
- Update the on-disk copy of quota usages. The command type specifies which type of quotas are to be updated. The Fa id and Fa addr arguments are ignored.
RETURN VALUESRv -std quotactl
ERRORSThe Fn quotactl system call will fail if:
- Bq Er EOPNOTSUPP
- The kernel has not been compiled with the QUOTA option.
- Bq Er EUSERS
- The quota table cannot be expanded.
- Bq Er EINVAL
or the command type is invalid.
quotas are not currently enabled for this file system.
The Fa id argument to Q_GETQUOTA Q_SETQUOTA or Q_SETUSE is a negative value.
- Bq Er EACCES
- In Q_QUOTAON the quota file is not a plain file.
- Bq Er EACCES
- Search permission is denied for a component of a path prefix.
- Bq Er ENOTDIR
- A component of a path prefix was not a directory.
- Bq Er ENAMETOOLONG
- A component of either pathname exceeded 255 characters, or the entire length of either path name exceeded 1023 characters.
- Bq Er ENOENT
- A filename does not exist.
- Bq Er ELOOP
- Too many symbolic links were encountered in translating a pathname.
- Bq Er EROFS
- In Q_QUOTAON either the file system on which quotas are to be enabled is mounted read-only or the quota file resides on a read-only file system.
- Bq Er EIO
- An I/O error occurred while reading from or writing to a file containing quotas.
- Bq Er EFAULT
- An invalid Fa addr was supplied; the associated structure could not be copied in or out of the kernel.
- Bq Er EFAULT
- The Fa path argument points outside the process's allocated address space.
- Bq Er EPERM
- The call was privileged and the caller was not the super-user.