quotactl

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
QUOTACTL(2)							  QUOTACTL(2)



NAME
       quotactl - manipulate disk quotas

SYNOPSIS
       #include <sys/quota.h>
       #include <sys/types.h>
       #include <xfs/xqm.h>
       #include <linux/dqblk_v1.h>
       #include <linux/dqblk_v2.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,
       command specific, data structure which is copied in or out of the sys-
       tem.  The interpretation of addr is given with each command below.

       Q_QUOTAON      Turn on quotas for a filesystem.	id is the identifica-
		      tion number of the quota format to be used. Format num-
		      bers are defined in the header file of appropriate for-
		      mat. Currently there are two  supported  quota  formats
		      whose  numbers  are  defined  by constants QFMT_VFS_OLD
		      (original quota format) and  QFMT_VFS_V0	(new  VFS  v0
		      quota  format).	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 quo-
		      tacheck(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 an if_dqblk structure
		      (defined	in  <sys/quota.h>).   The   field   dqb_valid
		      defines the entries in the structure which are set cor-
		      rectly. On Q_GETQUOTA call all entries are valid.	 Only
		      the  super-user may get the quotas of a user other than
		      himself.

       Q_SETQUOTA     Set current quota information for	 user  or  group  id.
		      addr  is a pointer to an if_dqblk structure (defined in
		      <sys/quota.h>).	The  field  dqb_valid  defines	which
		      entries  in the quota structure are valid and should be
		      set. The constants for dqb_valid field are  defined  in
		      the  <sys/quota.h>  header  file.	 This  call obsoletes
		      calls Q_SETQLIM and  Q_SETUSE  in	 the  previous	quota
		      interfaces.  This call is restricted to the super-user.

       Q_GETINFO      Get information (like  grace  times)  about  quotafile.
		      addr  should  be	a  pointer  to an if_dqinfo structure
		      (defined in <sys/quota.h>).  The dqi_valid field in the
		      structure	 defines  entries  in  it which are valid. On
		      Q_GETINFO call all entries are valid.  Parameter id  is
		      ignored.

       Q_SETINFO      Set  information	about  quotafile.   addr  should be a
		      pointer	to   if_dqinfo	  structure    (defined	   in
		      <sys/quota.h>).	The  field  dqi_valid  defines	which
		      entries in the  quota  info  structure  are  valid  and
		      should  be  set.	The constants for dqi_valid field are
		      defined in the <sys/quota.h>  header  file.  This	 call
		      obsoletes calls Q_SETGRACE and Q_SETFLAGS in the previ-
		      ous quota interfaces. Parameter  id  is  ignored.	 This
		      operation is restricted to super-user.

       Q_GETFMT	      Get  quota  format  used	on  the specified filesystem.
		      addr should be a pointer to a memory  (4	bytes)	where
		      the format number will be stored.

       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
		      structure	 (defined  in  <sys/quota.h>)  in  which data
		      should be stored.	 special and id are ignored.

       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
		      <xfs/xqm.h>.  This call is restricted to the superuser.

       Q_XQUOTAOFF    Turn off quotas for an XFS filesystem.   As  in  Q_QUO-
		      TAON,  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 <xfs/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	<xfs/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 meta-
       data 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.

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

       EINVAL

		      cmd or type 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.

       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.

       EINVAL	      The quota file is corrupted.

       ESRCH	      Specified quota format was not found.

       EBUSY	      Q_QUOTAON attempted while another Q_QUOTAON has already
		      taken place.

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



								  QUOTACTL(2)