ABCDEFGHIJKLMNOPQRSTUVWXYZ

quotactl

QUOTACTL(2)                                                        QUOTACTL(2)



NAME
       quotactl - manipulate disk quotas

SYNOPSIS
       #include <linux/quota.h>
       #include <linux/xqm.h>

       long quotactl(int cmd, char *special, qid_t id, caddr_t addr)

DESCRIPTION
       The  quotactl()  call manipulates disk quotas.  cmd indicates a command
       to be applied to UID id or GID id.  To set the type of  quota  use  the
       QCMD(cmd,  type)  macro.   special  is  a  pointer to a null-terminated
       string containing the path name of the block  special  device  for  the
       filesystem being manipulated.  addr is the address of an optional, com-
       mand specific, data structure which is copied in or out of the  system.
       The interpretation of addr is given with each command below.

       Q_QUOTAON      Turn  on  quotas  for  a filesystem.  addr points to the
                      path name of file containing the quotas for the filesys-
                      tem.   The quota file must exist; it is normally created
                      with the quotacheck(8) program.  This call is restricted
                      to the super-user.

       Q_QUOTAOFF     Turn  off  quotas  for  a  filesystem.   addr and id are
                      ignored.  This call is restricted to the super-user.

       Q_GETQUOTA     Get disk quota limits and  current  usage  for  user  or
                      group  id.   addr  is a pointer to a mem_dqblk structure
                      (defined in <linux/quota.h>).  Only the  super-user  may
                      get the quotas of a user other than himself.

       Q_SETQUOTA     Set  disk  quota  limits  and  current usage for user or
                      group id.  addr is a pointer to  a  mem_dqblk  structure
                      (defined  in  <linux/quota.h>).  This call is restricted
                      to the super-user.

       Q_SETQLIM      Set disk quota limits for user or group id.  addr  is  a
                      pointer   to   a   mem_dqblk   structure   (defined   in
                      <linux/quota.h>).  This call is restricted to the super-
                      user.

       Q_SETUSE       Set  current  usage  for  user  or  group id.  addr is a
                      pointer   to   a   mem_dqblk   structure   (defined   in
                      <linux/quota.h>).  This call is restricted to the super-
                      user.

       Q_SYNC         Update the on-disk copy of quota usages for  a  filesys-
                      tem.   If  special  is  null  then  all filesystems with
                      active quotas are sync'ed.  addr and id are ignored.

       Q_GETSTATS     Get statistics and other generic information about quota
                      subsystem.   addr  should be a pointer to dqstats struc-
                      ture (defined in <linux/quota.h>) in which  data  should
                      be stored.  special and id are ignored.

       New quota format also allows following additional calls:

       Q_GETINFO      Get  information  (like  grace  times)  about quotafile.
                      addr  should  be  a  pointer  to  mem_dqinfo   structure
                      (defined in <linux/quota.h>).  id is ignored.

       Q_SETINFO      Set  information  about  quotafile.   addr  should  be a
                      pointer   to   mem_dqinfo    structure    (defined    in
                      <linux/quota.h>).   id  is  ignored.  This  operation is
                      restricted to super-user.

       Q_SETGRACE     Set grace times in information  about  quotafile.   addr
                      should  be a pointer to mem_dqinfo structure (defined in
                      <linux/quota.h>).  id  is  ignored.  This  operation  is
                      restricted to super-user.

       Q_SETFLAGS     Set  flags  in  information about quotafile. These flags
                      are defined in <linux/quota.h>.   Note  that  there  are
                      currently no defined flags.  addr should be a pointer to
                      mem_dqinfo structure (defined in  <linux/quota.h>).   id
                      is  ignored. This operation is restricted to super-user.

       For XFS filesystems making use of the  XFS  Quota  Manager  (XQM),  the
       above commands are bypassed and the following commands are used:

       Q_XQUOTAON     Turn on quotas for an XFS filesystem.  XFS provides  the
                      ability  to  turn  on/off  quota  limit enforcement with
                      quota accounting.  Therefore, XFS expects the addr to be
                      a  pointer  to  an unsigned int that contains either the
                      flags XFS_QUOTA_UDQ_ACCT and/or XFS_QUOTA_UDQ_ENFD  (for
                      user     quota),     or     XFS_QUOTA_GDQ_ACCT    and/or
                      XFS_QUOTA_GDQ_ENFD (for  group  quota),  as  defined  in
                      <linux/xqm.h>.   This  call  is  restricted to the supe-
                      ruser.

       Q_XQUOTAOFF    Turn off quotas for an XFS filesystem.  As in Q_QUOTAON,
                      XFS filesystems expect a pointer to an unsigned int that
                      specifies whether quota accounting and/or limit enforce-
                      ment  need to be turned off.  This call is restricted to
                      the superuser.

       Q_XGETQUOTA    Get disk quota limits and current  usage  for  user  id.
                      addr  is a pointer to a fs_disk_quota structure (defined
                      in <linux/xqm.h>).  Only the superuser may get the  quo-
                      tas of a user other than himself.

       Q_XSETQLIM     Set disk quota limits for user id.  addr is a pointer to
                      a fs_disk_quota structure  (defined  in  <linux/xqm.h>).
                      This call is restricted to the superuser.

       Q_XGETQSTAT    Returns   a   fs_quota_stat   structure  containing  XFS
                      filesystem specific quota information.  This  is  useful
                      in  finding  out  how much space is spent to store quota
                      information, and also to get  quotaon/off  status  of  a
                      given local XFS filesystem.

       Q_XQUOTARM     Free  the  disk space taken by disk quotas.  Quotas must
                      have already been turned off.

       There is no command equivalent to Q_SYNC for XFS since  sync(1)  writes
       quota information to disk (in addition to the other filesystem metadata
       it writes out).

RETURN VALUES
       quotactl() returns:

       0      on success.

       -1     on failure and sets errno to indicate the error.

ERRORS
       EFAULT         addr or special are invalid.

       EINVAL         The kernel has not been compiled with the QUOTA  option.

                      cmd is invalid.

       ENOENT         The file specified by special or addr does not exist.

       ENOTBLK        special is not a block device.

       EPERM          The call is privileged and the caller was not the super-
                      user.

       ESRCH          No disc quota is found for the indicated user.

                      Quotas have not been turned on for this filesystem.

       EUSERS         The quota table is full.

       If cmd is Q_QUOTAON, quotactl() may set errno to:

       EACCES         The quota file pointed to by addr exists but  is  not  a
                      regular file.

                      The  quota  file pointed to by addr exists but is not on
                      the filesystem pointed to by special.

       EBUSY          Q_QUOTAON attempted while another Q_QUOTAON has  already
                      taken place.

SEE ALSO
       quota(1), getrlimit(2), quotacheck(8), quotaon(8)



                                                                   QUOTACTL(2)