QUOTACTL(2) BSD Programmer's Manual QUOTACTL(2) NNAAMMEE qquuoottaaccttll - manipulate filesystem quotas SSYYNNOOPPSSIISS _#_i_n_c_l_u_d_e _<_u_f_s_/_q_u_o_t_a_._h_> _/_* _f_o_r _u_f_s _q_u_o_t_a_s _*_/ _i_n_t qquuoottaaccttll(_c_o_n_s_t _c_h_a_r _*_p_a_t_h, _i_n_t _c_m_d, _i_n_t _i_d, _c_h_a_r _*_a_d_d_r); DDEESSCCRRIIPPTTIIOONN The qquuoottaaccttll() call enables, disables and manipulates filesystem quotas. A quota control command given by _c_m_d operates on the given filename _p_a_t_h for the given user _i_d. The address of an optional command specific data structure, _a_d_d_r, may be given; its interpretation is discussed below with each command. Currently quotas are supported only for the ``ufs'' filesystem. For ``ufs'', a command is composed of a primary command (see below) and a command type used to interpret the _i_d. Types are supported for interpre- tation of user identifiers and group identifiers. The ``ufs'' specific commands are: Q_QUOTAON Enable disk quotas for the filesystem specified by _p_a_t_h. The command type specifies the type of the quotas being enabled. The _a_d_d_r argument specifies a file from which to take the quo- tas. The quota file must exist; it is normally created with the quotacheck(8) program. The _i_d argument is unused. Only the super-user may turn quotas on. Q_QUOTAOFF Disable disk quotas for the filesystem specified by _p_a_t_h. The command type specifies the type of the quotas being disabled. The _a_d_d_r and _i_d 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 _i_d. _A_d_d_r is a pointer to a _s_t_r_u_c_t _d_q_b_l_k structure (defined in <_u_f_s_/_q_u_o_t_a_._h>). Q_SETQUOTA Set disk quota limits for the user or group (as determined by the command type) with identifier _i_d. _A_d_d_r is a pointer to a _s_t_r_u_c_t _d_q_b_l_k structure (defined in <_u_f_s_/_q_u_o_t_a_._h>). The usage fields of the _d_q_b_l_k structure are ignored. This call is re- stricted to the super-user. Q_SETUSE Set disk usage limits for the user or group (as determined by the command type) with identifier _i_d. _A_d_d_r is a pointer to a _s_t_r_u_c_t _d_q_b_l_k structure (defined in <_u_f_s_/_q_u_o_t_a_._h>). 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 _i_d and _a_d_d_r parameters are ignored. RREETTUURRNN VVAALLUUEESS A successful call returns 0, otherwise the value -1 is returned and the global variable _e_r_r_n_o indicates the reason for the failure. EERRRROORRSS A qquuoottaaccttll() call will fail if: [EOPNOTSUPP] The kernel has not been compiled with the QUOTA option. [EUSERS] The quota table cannot be expanded. [EINVAL] _C_m_d or the command type is invalid. [EINVAL] A pathname contains a character with the high-order bit set. [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 either pathname exceeded 255 characters, or the entire length of either path name exceeded 1023 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 _a_d_d_r was supplied; the associated structure could not be copied in or out of the kernel. [EFAULT] _P_a_t_h points outside the process's allocated address space. [EPERM] The call was privileged and the caller was not the super- user. SSEEEE AALLSSOO quota(1), fstab(5), edquota(8), quotacheck(8), quotaon(8), repquo- ta(8) BBUUGGSS There should be some way to integrate this call with the resource limit interface provided by setrlimit(2) and getrlimit(2). HHIISSTTOORRYY The qquuoottaaccttll function call appeared in 4.3BSD-Reno. 4.4BSD June 4, 1993 2