| .\" Hey Emacs! This file is -*- nroff -*- source. |
| .\" |
| .\" Copyright (C) 1996 Andries Brouwer (aeb@cwi.nl) |
| .\" |
| .\" Permission is granted to make and distribute verbatim copies of this |
| .\" manual provided the copyright notice and this permission notice are |
| .\" preserved on all copies. |
| .\" |
| .\" Permission is granted to copy and distribute modified versions of this |
| .\" manual under the conditions for verbatim copying, provided that the |
| .\" entire resulting derived work is distributed under the terms of a |
| .\" permission notice identical to this one. |
| .\" |
| .\" Since the Linux kernel and libraries are constantly changing, this |
| .\" manual page may be incorrect or out-of-date. The author(s) assume no |
| .\" responsibility for errors or omissions, or for damages resulting from |
| .\" the use of the information contained herein. The author(s) may not |
| .\" have taken the same level of care in the production of this manual, |
| .\" which is licensed free of charge, as they might when working |
| .\" professionally. |
| .\" |
| .\" Formatted or processed versions of this manual, if unaccompanied by |
| .\" the source, must acknowledge the copyright and authors of this work. |
| .\" |
| .\" FIXME There is much that is missing and/or out of date in this page. |
| .\" (There is a quotactl.2 page in the quotactl package that seems to |
| .\" have more info than this page.) |
| .\" As things stand the page more or less documents Linux 2.2 reality: |
| .\" |
| .\" Linux 2.2 has: |
| .\" |
| .\" Q_GETQUOTA |
| .\" Q_GETSTATS |
| .\" Q_QUOTAOFF |
| .\" Q_QUOTAON |
| .\" Q_RSQUASH (not currently documented) |
| .\" Q_SETQLIM |
| .\" Q_SETQUOTA |
| .\" Q_SETUSE |
| .\" Q_SYNC |
| .\" |
| .\" Linux 2.4 has: |
| .\" |
| .\" Q_COMP_QUOTAOFF |
| .\" Q_COMP_QUOTAON |
| .\" Q_COMP_SYNC |
| .\" Q_GETFMT |
| .\" Q_GETINFO |
| .\" Q_GETQUOTA |
| .\" Q_QUOTAOFF |
| .\" Q_QUOTAON |
| .\" Q_SETINFO |
| .\" Q_SETQUOTA |
| .\" Q_SYNC |
| .\" Q_V1_GETQUOTA Q_V1_GETSTATS Q_V1_RSQUASH Q_V1_SETQLIM |
| .\" Q_V1_SETQUOTA Q_V1_SETUSE |
| .\" Q_V2_GETINFO Q_V2_GETQUOTA Q_V2_SETFLAGS Q_V2_SETGRACE |
| .\" Q_V2_SETINFO Q_V2_SETQUOTA Q_V2_SETUSE |
| .\" Q_XGETQSTAT Q_XGETQUOTA Q_XQUOTAOFF Q_XQUOTAON Q_XQUOTARM |
| .\" Q_XSETQLIM |
| .\" |
| .\" Linux 2.6.16 has: |
| .\" |
| .\" Q_GETFMT |
| .\" Q_GETINFO |
| .\" Q_GETQUOTA |
| .\" Q_QUOTAOFF |
| .\" Q_QUOTAON |
| .\" Q_SETINFO |
| .\" Q_SETQUOTA |
| .\" Q_SYNC |
| .\" Q_XGETQSTAT |
| .\" Q_XGETQUOTA |
| .\" Q_XQUOTAOFF |
| .\" Q_XQUOTAON |
| .\" Q_XQUOTARM |
| .\" Q_XQUOTASYNC |
| .\" Q_XSETQLIM |
| .\" |
| .TH QUOTACTL 2 2007-06-01 "Linux" "Linux Programmer's Manual" |
| .SH NAME |
| quotactl \- manipulate disk quota |
| .SH SYNOPSIS |
| .nf |
| .B #include <sys/types.h> |
| .br |
| .B #include <sys/quota.h> |
| .sp |
| .BI "int quotactl(int " cmd ", const char *" special ", int " id \ |
| ", caddr_t " addr ); |
| .fi |
| .SH DESCRIPTION |
| 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 |
| .BR quotactl () |
| system call manipulates these quota. |
| Its first argument is |
| of the form |
| .BI QCMD( subcmd , type ) |
| where |
| .I type |
| is either |
| .B USRQUOTA |
| or |
| .B GRPQUOTA |
| (for user quota and group quota, respectively), and |
| .I subcmd |
| is described below. |
| |
| The second argument |
| .I special |
| is the block special device these quota apply to. |
| It must be mounted. |
| |
| The third argument |
| .I id |
| is the user or group ID these quota apply to (when relevant). |
| |
| The fourth argument |
| .I addr |
| is the address of a data structure, depending on the command. |
| |
| The |
| .I subcmd |
| is one of |
| .TP 1.1i |
| .B Q_QUOTAON |
| Enable quota. |
| The |
| .I addr |
| argument is the pathname of the file containing |
| the quota for the file system. |
| .TP |
| .B Q_QUOTAOFF |
| Disable quota. |
| .TP |
| .B Q_GETQUOTA |
| Get limits and current usage of disk space. |
| The |
| .I addr |
| argument is a pointer to a dqblk structure (defined in |
| .IR <sys/quota.h> ). |
| .TP |
| .B Q_SETQUOTA |
| Set limits and current usage; |
| .I addr |
| is as before. |
| .TP |
| .B Q_SETQLIM |
| Set limits; |
| .I addr |
| is as before. |
| .TP |
| .B Q_SETUSE |
| Set usage. |
| .TP |
| .B Q_SYNC |
| Sync disk copy of a file system's quota. |
| .TP |
| .B Q_GETSTATS |
| Get collected stats. |
| .SH "RETURN VALUE" |
| On success, |
| .BR quotactl () |
| returns 0. |
| On error, \-1 is returned, and |
| .I errno |
| is set appropriately. |
| .SH ERRORS |
| .TP 0.9i |
| .B EACCES |
| The quota file is not an ordinary file. |
| .TP |
| .B EBUSY |
| .B Q_QUOTAON |
| was asked, but quotas were enabled already. |
| .TP |
| .B EFAULT |
| Bad |
| .I addr |
| value. |
| .TP |
| .B EINVAL |
| .I type |
| is not a known quota type. |
| Or, |
| .I special |
| could not be found. |
| .TP |
| .B EIO |
| Cannot read or write the quota file. |
| .TP |
| .B EMFILE |
| Too many open files: cannot open quota file. |
| .TP |
| .B ENODEV |
| .I special |
| cannot be found in the mount table. |
| .TP |
| .B ENOPKG |
| The kernel was compiled without quota support. |
| .TP |
| .B ENOTBLK |
| .I special |
| is not a block special device. |
| .TP |
| .B EPERM |
| The process was not root (for the file system), and |
| .B Q_GETQUOTA |
| was asked for another |
| .I id |
| than that of the process itself, or anything other than |
| .B Q_GETSTATS |
| or |
| .B Q_SYNC |
| was asked. |
| .TP |
| .B ESRCH |
| .B Q_GETQUOTA |
| or |
| .B Q_SETQUOTA |
| or |
| .B Q_SETUSE |
| or |
| .B Q_SETQLIM |
| was asked for a file system that didn't have quota enabled. |
| .SH "CONFORMING TO" |
| BSD. |
| .SH "SEE ALSO" |
| .BR quota (1), |
| .BR getrlimit (2), |
| .BR setrlimit (2), |
| .BR ulimit (3), |
| .BR quotacheck (8), |
| .BR quotaon (8) |