File: /Users/paulross/dev/linux/linux-3.13/include/uapi/linux/quota.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: /*
       2:  * Copyright (c) 1982, 1986 Regents of the University of California.
       3:  * All rights reserved.
       4:  *
       5:  * This code is derived from software contributed to Berkeley by
       6:  * Robert Elz at The University of Melbourne.
       7:  *
       8:  * Redistribution and use in source and binary forms, with or without
       9:  * modification, are permitted provided that the following conditions
      10:  * are met:
      11:  * 1. Redistributions of source code must retain the above copyright
      12:  *    notice, this list of conditions and the following disclaimer.
      13:  * 2. Redistributions in binary form must reproduce the above copyright
      14:  *    notice, this list of conditions and the following disclaimer in the
      15:  *    documentation and/or other materials provided with the distribution.
      16:  * 3. Neither the name of the University nor the names of its contributors
      17:  *    may be used to endorse or promote products derived from this software
      18:  *    without specific prior written permission.
      19:  *
      20:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
      21:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      22:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      23:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
      24:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      25:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
      26:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
      27:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
      28:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
      29:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
      30:  * SUCH DAMAGE.
      31:  */
      32: 
      33: #ifndef _UAPI_LINUX_QUOTA_
      34: #define _UAPI_LINUX_QUOTA_
      35: 
      36: #include <linux/errno.h>
      37: #include <linux/types.h>
      38: 
      39: #define __DQUOT_VERSION__    "dquot_6.5.2"
      40: 
      41: #define MAXQUOTAS 2
      42: #define USRQUOTA  0        /* element used for user quotas */
      43: #define GRPQUOTA  1        /* element used for group quotas */
      44: 
      45: /*
      46:  * Definitions for the default names of the quotas files.
      47:  */
      48: #define INITQFNAMES { \
      49:     "user",    /* USRQUOTA */ \
      50:     "group",   /* GRPQUOTA */ \
      51:     "undefined", \
      52: };
      53: 
      54: /*
      55:  * Command definitions for the 'quotactl' system call.
      56:  * The commands are broken into a main command defined below
      57:  * and a subcommand that is used to convey the type of
      58:  * quota that is being manipulated (see above).
      59:  */
      60: #define SUBCMDMASK  0x00ff
      61: #define SUBCMDSHIFT 8
      62: #define QCMD(cmd, type)  (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK))
      63: 
      64: #define Q_SYNC     0x800001    /* sync disk copy of a filesystems quotas */
      65: #define Q_QUOTAON  0x800002    /* turn quotas on */
      66: #define Q_QUOTAOFF 0x800003    /* turn quotas off */
      67: #define Q_GETFMT   0x800004    /* get quota format used on given filesystem */
      68: #define Q_GETINFO  0x800005    /* get information about quota files */
      69: #define Q_SETINFO  0x800006    /* set information about quota files */
      70: #define Q_GETQUOTA 0x800007    /* get user quota structure */
      71: #define Q_SETQUOTA 0x800008    /* set user quota structure */
      72: 
      73: /* Quota format type IDs */
      74: #define    QFMT_VFS_OLD 1
      75: #define    QFMT_VFS_V0 2
      76: #define QFMT_OCFS2 3
      77: #define    QFMT_VFS_V1 4
      78: 
      79: /* Size of block in which space limits are passed through the quota
      80:  * interface */
      81: #define QIF_DQBLKSIZE_BITS 10
      82: #define QIF_DQBLKSIZE (1 << QIF_DQBLKSIZE_BITS)
      83: 
      84: /*
      85:  * Quota structure used for communication with userspace via quotactl
      86:  * Following flags are used to specify which fields are valid
      87:  */
      88: enum {
      89:     QIF_BLIMITS_B = 0,
      90:     QIF_SPACE_B,
      91:     QIF_ILIMITS_B,
      92:     QIF_INODES_B,
      93:     QIF_BTIME_B,
      94:     QIF_ITIME_B,
      95: };
      96: 
      97: #define QIF_BLIMITS    (1 << QIF_BLIMITS_B)
      98: #define QIF_SPACE    (1 << QIF_SPACE_B)
      99: #define QIF_ILIMITS    (1 << QIF_ILIMITS_B)
     100: #define QIF_INODES    (1 << QIF_INODES_B)
     101: #define QIF_BTIME    (1 << QIF_BTIME_B)
     102: #define QIF_ITIME    (1 << QIF_ITIME_B)
     103: #define QIF_LIMITS    (QIF_BLIMITS | QIF_ILIMITS)
     104: #define QIF_USAGE    (QIF_SPACE | QIF_INODES)
     105: #define QIF_TIMES    (QIF_BTIME | QIF_ITIME)
     106: #define QIF_ALL        (QIF_LIMITS | QIF_USAGE | QIF_TIMES)
     107: 
     108: struct if_dqblk {
     109:     __u64 dqb_bhardlimit;
     110:     __u64 dqb_bsoftlimit;
     111:     __u64 dqb_curspace;
     112:     __u64 dqb_ihardlimit;
     113:     __u64 dqb_isoftlimit;
     114:     __u64 dqb_curinodes;
     115:     __u64 dqb_btime;
     116:     __u64 dqb_itime;
     117:     __u32 dqb_valid;
     118: };
     119: 
     120: /*
     121:  * Structure used for setting quota information about file via quotactl
     122:  * Following flags are used to specify which fields are valid
     123:  */
     124: #define IIF_BGRACE    1
     125: #define IIF_IGRACE    2
     126: #define IIF_FLAGS    4
     127: #define IIF_ALL        (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)
     128: 
     129: struct if_dqinfo {
     130:     __u64 dqi_bgrace;
     131:     __u64 dqi_igrace;
     132:     __u32 dqi_flags;
     133:     __u32 dqi_valid;
     134: };
     135: 
     136: /*
     137:  * Definitions for quota netlink interface
     138:  */
     139: #define QUOTA_NL_NOWARN 0
     140: #define QUOTA_NL_IHARDWARN 1        /* Inode hardlimit reached */
     141: #define QUOTA_NL_ISOFTLONGWARN 2     /* Inode grace time expired */
     142: #define QUOTA_NL_ISOFTWARN 3        /* Inode softlimit reached */
     143: #define QUOTA_NL_BHARDWARN 4        /* Block hardlimit reached */
     144: #define QUOTA_NL_BSOFTLONGWARN 5    /* Block grace time expired */
     145: #define QUOTA_NL_BSOFTWARN 6        /* Block softlimit reached */
     146: #define QUOTA_NL_IHARDBELOW 7        /* Usage got below inode hardlimit */
     147: #define QUOTA_NL_ISOFTBELOW 8        /* Usage got below inode softlimit */
     148: #define QUOTA_NL_BHARDBELOW 9        /* Usage got below block hardlimit */
     149: #define QUOTA_NL_BSOFTBELOW 10        /* Usage got below block softlimit */
     150: 
     151: enum {
     152:     QUOTA_NL_C_UNSPEC,
     153:     QUOTA_NL_C_WARNING,
     154:     __QUOTA_NL_C_MAX,
     155: };
     156: #define QUOTA_NL_C_MAX (__QUOTA_NL_C_MAX - 1)
     157: 
     158: enum {
     159:     QUOTA_NL_A_UNSPEC,
     160:     QUOTA_NL_A_QTYPE,
     161:     QUOTA_NL_A_EXCESS_ID,
     162:     QUOTA_NL_A_WARNING,
     163:     QUOTA_NL_A_DEV_MAJOR,
     164:     QUOTA_NL_A_DEV_MINOR,
     165:     QUOTA_NL_A_CAUSED_ID,
     166:     __QUOTA_NL_A_MAX,
     167: };
     168: #define QUOTA_NL_A_MAX (__QUOTA_NL_A_MAX - 1)
     169: 
     170: 
     171: #endif /* _UAPI_LINUX_QUOTA_ */
     172: