Blame view

include/linux/dqblk_xfs.h 6.71 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
  /*
   * Copyright (c) 1995-2001,2004 Silicon Graphics, Inc.  All Rights Reserved.
   *
436d7d306   Nathan Scott   [XFS] Update XFS ...
4
5
   * This program is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public License
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
6
7
8
9
10
   * as published by the Free Software Foundation.
   *
   * This program is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
436d7d306   Nathan Scott   [XFS] Update XFS ...
11
   * GNU Lesser General Public License for more details.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
12
   *
436d7d306   Nathan Scott   [XFS] Update XFS ...
13
14
15
   * You should have received a copy of the GNU Lesset General Public License
   * along with this program; if not, write to the Free Software Foundation,
   * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   */
  #ifndef _LINUX_DQBLK_XFS_H
  #define _LINUX_DQBLK_XFS_H
  
  #include <linux/types.h>
  
  /*
   * Disk quota - quotactl(2) commands for the XFS Quota Manager (XQM).
   */
  
  #define XQM_CMD(x)	(('X'<<8)+(x))	/* note: forms first QCMD argument */
  #define XQM_COMMAND(x)	(((x) & (0xff<<8)) == ('X'<<8))	/* test if for XFS */
  
  #define XQM_USRQUOTA	0	/* system call user quota type */
  #define XQM_GRPQUOTA	1	/* system call group quota type */
a2f8e178a   Nathan Scott   [XFS] Add the pro...
31
32
  #define XQM_PRJQUOTA	2	/* system call project quota type */
  #define XQM_MAXQUOTAS	3
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
33
34
35
36
37
38
39
  
  #define Q_XQUOTAON	XQM_CMD(1)	/* enable accounting/enforcement */
  #define Q_XQUOTAOFF	XQM_CMD(2)	/* disable accounting/enforcement */
  #define Q_XGETQUOTA	XQM_CMD(3)	/* get disk limits and usage */
  #define Q_XSETQLIM	XQM_CMD(4)	/* set disk limits */
  #define Q_XGETQSTAT	XQM_CMD(5)	/* get quota subsystem status */
  #define Q_XQUOTARM	XQM_CMD(6)	/* free disk space used by dquots */
de69e5f44   Nathan Scott   [XFS] Add a mecha...
40
  #define Q_XQUOTASYNC	XQM_CMD(7)	/* delalloc flush, updates dquots */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
41
42
43
44
45
46
47
48
49
50
51
  
  /*
   * fs_disk_quota structure:
   *
   * This contains the current quota information regarding a user/proj/group.
   * It is 64-bit aligned, and all the blk units are in BBs (Basic Blocks) of
   * 512 bytes.
   */
  #define FS_DQUOT_VERSION	1	/* fs_disk_quota.d_version */
  typedef struct fs_disk_quota {
  	__s8		d_version;	/* version of this structure */
ade7ce31c   Christoph Hellwig   quota: Clean up t...
52
  	__s8		d_flags;	/* FS_{USER,PROJ,GROUP}_QUOTA */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
  	__u16		d_fieldmask;	/* field specifier */
  	__u32		d_id;		/* user, project, or group ID */
  	__u64		d_blk_hardlimit;/* absolute limit on disk blks */
  	__u64		d_blk_softlimit;/* preferred limit on disk blks */
  	__u64		d_ino_hardlimit;/* maximum # allocated inodes */
  	__u64		d_ino_softlimit;/* preferred inode limit */
  	__u64		d_bcount;	/* # disk blocks owned by the user */
  	__u64		d_icount;	/* # inodes owned by the user */
  	__s32		d_itimer;	/* zero if within inode limits */
  					/* if not, we refuse service */
  	__s32		d_btimer;	/* similar to above; for disk blocks */
  	__u16	  	d_iwarns;       /* # warnings issued wrt num inodes */
  	__u16	  	d_bwarns;       /* # warnings issued wrt disk blocks */
  	__s32		d_padding2;	/* padding2 - for future use */
  	__u64		d_rtb_hardlimit;/* absolute limit on realtime blks */
  	__u64		d_rtb_softlimit;/* preferred limit on RT disk blks */
  	__u64		d_rtbcount;	/* # realtime blocks owned */
  	__s32		d_rtbtimer;	/* similar to above; for RT disk blks */
  	__u16	  	d_rtbwarns;     /* # warnings issued wrt RT disk blks */
  	__s16		d_padding3;	/* padding3 - for future use */	
  	char		d_padding4[8];	/* yet more padding */
  } fs_disk_quota_t;
  
  /*
   * These fields are sent to Q_XSETQLIM to specify fields that need to change.
   */
  #define FS_DQ_ISOFT	(1<<0)
  #define FS_DQ_IHARD	(1<<1)
  #define FS_DQ_BSOFT	(1<<2)
  #define FS_DQ_BHARD 	(1<<3)
  #define FS_DQ_RTBSOFT	(1<<4)
  #define FS_DQ_RTBHARD	(1<<5)
  #define FS_DQ_LIMIT_MASK	(FS_DQ_ISOFT | FS_DQ_IHARD | FS_DQ_BSOFT | \
  				 FS_DQ_BHARD | FS_DQ_RTBSOFT | FS_DQ_RTBHARD)
  /*
   * These timers can only be set in super user's dquot. For others, timers are
   * automatically started and stopped. Superusers timer values set the limits
   * for the rest.  In case these values are zero, the DQ_{F,B}TIMELIMIT values
   * defined below are used. 
   * These values also apply only to the d_fieldmask field for Q_XSETQLIM.
   */
  #define FS_DQ_BTIMER	(1<<6)
  #define FS_DQ_ITIMER	(1<<7)
  #define FS_DQ_RTBTIMER 	(1<<8)
  #define FS_DQ_TIMER_MASK	(FS_DQ_BTIMER | FS_DQ_ITIMER | FS_DQ_RTBTIMER)
  
  /*
   * Warning counts are set in both super user's dquot and others. For others,
   * warnings are set/cleared by the administrators (or automatically by going
   * below the soft limit).  Superusers warning values set the warning limits
   * for the rest.  In case these values are zero, the DQ_{F,B}WARNLIMIT values
   * defined below are used. 
   * These values also apply only to the d_fieldmask field for Q_XSETQLIM.
   */
  #define FS_DQ_BWARNS	(1<<9)
  #define FS_DQ_IWARNS	(1<<10)
  #define FS_DQ_RTBWARNS	(1<<11)
  #define FS_DQ_WARNS_MASK	(FS_DQ_BWARNS | FS_DQ_IWARNS | FS_DQ_RTBWARNS)
  
  /*
c472b4327   Christoph Hellwig   quota: unify ->se...
113
114
115
116
117
118
119
120
121
   * Accounting values.  These can only be set for filesystem with
   * non-transactional quotas that require quotacheck(8) in userspace.
   */
  #define FS_DQ_BCOUNT		(1<<12)
  #define FS_DQ_ICOUNT		(1<<13)
  #define FS_DQ_RTBCOUNT		(1<<14)
  #define FS_DQ_ACCT_MASK		(FS_DQ_BCOUNT | FS_DQ_ICOUNT | FS_DQ_RTBCOUNT)
  
  /*
ade7ce31c   Christoph Hellwig   quota: Clean up t...
122
   * Various flags related to quotactl(2).
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
123
   */
ade7ce31c   Christoph Hellwig   quota: Clean up t...
124
125
126
127
128
129
  #define FS_QUOTA_UDQ_ACCT	(1<<0)  /* user quota accounting */
  #define FS_QUOTA_UDQ_ENFD	(1<<1)  /* user quota limits enforcement */
  #define FS_QUOTA_GDQ_ACCT	(1<<2)  /* group quota accounting */
  #define FS_QUOTA_GDQ_ENFD	(1<<3)  /* group quota limits enforcement */
  #define FS_QUOTA_PDQ_ACCT	(1<<4)  /* project quota accounting */
  #define FS_QUOTA_PDQ_ENFD	(1<<5)  /* project quota limits enforcement */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
130

ade7ce31c   Christoph Hellwig   quota: Clean up t...
131
132
133
  #define FS_USER_QUOTA		(1<<0)	/* user quota type */
  #define FS_PROJ_QUOTA		(1<<1)	/* project quota type */
  #define FS_GROUP_QUOTA		(1<<2)	/* group quota type */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
134
135
136
  
  /*
   * fs_quota_stat is the struct returned in Q_XGETQSTAT for a given file system.
47bdd718c   Adrian Bunk   typo fixes: infom...
137
   * Provides a centralized way to get meta information about the quota subsystem.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
138
139
140
141
142
143
   * eg. space taken up for user and group quotas, number of dquots currently
   * incore.
   */
  #define FS_QSTAT_VERSION	1	/* fs_quota_stat.qs_version */
  
  /*
47bdd718c   Adrian Bunk   typo fixes: infom...
144
   * Some basic information about 'quota files'.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
145
146
147
148
149
150
151
152
153
   */
  typedef struct fs_qfilestat {
  	__u64		qfs_ino;	/* inode number */
  	__u64		qfs_nblks;	/* number of BBs 512-byte-blks */
  	__u32		qfs_nextents;	/* number of extents */
  } fs_qfilestat_t;
  
  typedef struct fs_quota_stat {
  	__s8		qs_version;	/* version number for future changes */
ade7ce31c   Christoph Hellwig   quota: Clean up t...
154
  	__u16		qs_flags;	/* FS_QUOTA_{U,P,G}DQ_{ACCT,ENFD} */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
155
156
157
158
159
160
161
162
163
164
165
166
  	__s8		qs_pad;		/* unused */
  	fs_qfilestat_t	qs_uquota;	/* user quota storage information */
  	fs_qfilestat_t	qs_gquota;	/* group quota storage information */
  	__u32		qs_incoredqs;	/* number of dquots incore */
  	__s32		qs_btimelimit;  /* limit for blks timer */	
  	__s32		qs_itimelimit;  /* limit for inodes timer */	
  	__s32		qs_rtbtimelimit;/* limit for rt blks timer */	
  	__u16		qs_bwarnlimit;	/* limit for num warnings */
  	__u16		qs_iwarnlimit;	/* limit for num warnings */
  } fs_quota_stat_t;
  
  #endif	/* _LINUX_DQBLK_XFS_H */