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 indi­
       cates 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,
       command 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 filesystem.  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  him­
                      self.

       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.

                      a filesystem.  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  informa­
                      tion about quota subsystem.  addr should be
                      a pointer to dqstats structure (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 follow­
                      ing 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 superuser.

                      in  Q_QUOTAON,  XFS  filesystems  expect  a
                      pointer to an unsigned int  that  specifies
                      whether   quota   accounting  and/or  limit
                      enforcement 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 quotas 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  contain­
                      ing  XFS filesystem specific quota informa­
                      tion.  This is useful in  finding  out  how
                      much space is spent to store quota informa­
                      tion, 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.

                      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)


Man(1) output converted with man2html