1 .. SPDX-License-Identifier: GPL-2.0 1 .. SPDX-License-Identifier: GPL-2.0 2 2 3 =============== 3 =============== 4 Quota subsystem 4 Quota subsystem 5 =============== 5 =============== 6 6 7 Quota subsystem allows system administrator to 7 Quota subsystem allows system administrator to set limits on used space and 8 number of used inodes (inode is a filesystem s 8 number of used inodes (inode is a filesystem structure which is associated with 9 each file or directory) for users and/or group 9 each file or directory) for users and/or groups. For both used space and number 10 of used inodes there are actually two limits. 10 of used inodes there are actually two limits. The first one is called softlimit 11 and the second one hardlimit. A user can neve 11 and the second one hardlimit. A user can never exceed a hardlimit for any 12 resource (unless he has CAP_SYS_RESOURCE capab 12 resource (unless he has CAP_SYS_RESOURCE capability). User is allowed to exceed 13 softlimit but only for limited period of time. 13 softlimit but only for limited period of time. This period is called "grace 14 period" or "grace time". When grace time is ov 14 period" or "grace time". When grace time is over, user is not able to allocate 15 more space/inodes until he frees enough of the 15 more space/inodes until he frees enough of them to get below softlimit. 16 16 17 Quota limits (and amount of grace time) are se 17 Quota limits (and amount of grace time) are set independently for each 18 filesystem. 18 filesystem. 19 19 20 For more details about quota design, see the d 20 For more details about quota design, see the documentation in quota-tools package 21 (https://sourceforge.net/projects/linuxquota). 21 (https://sourceforge.net/projects/linuxquota). 22 22 23 Quota netlink interface 23 Quota netlink interface 24 ======================= 24 ======================= 25 When user exceeds a softlimit, runs out of gra 25 When user exceeds a softlimit, runs out of grace time or reaches hardlimit, 26 quota subsystem traditionally printed a messag 26 quota subsystem traditionally printed a message to the controlling terminal of 27 the process which caused the excess. This meth 27 the process which caused the excess. This method has the disadvantage that 28 when user is using a graphical desktop he usua 28 when user is using a graphical desktop he usually cannot see the message. 29 Thus quota netlink interface has been designed 29 Thus quota netlink interface has been designed to pass information about 30 the above events to userspace. There they can 30 the above events to userspace. There they can be captured by an application 31 and processed accordingly. 31 and processed accordingly. 32 32 33 The interface uses generic netlink framework ( 33 The interface uses generic netlink framework (see 34 https://lwn.net/Articles/208755/ and http://ww 34 https://lwn.net/Articles/208755/ and http://www.infradead.org/~tgr/libnl/ for 35 more details about this layer). The name of th 35 more details about this layer). The name of the quota generic netlink interface 36 is "VFS_DQUOT". Definitions of constants below 36 is "VFS_DQUOT". Definitions of constants below are in <linux/quota.h>. Since 37 the quota netlink protocol is not namespace aw 37 the quota netlink protocol is not namespace aware, quota netlink messages are 38 sent only in initial network namespace. 38 sent only in initial network namespace. 39 39 40 Currently, the interface supports only one mes 40 Currently, the interface supports only one message type QUOTA_NL_C_WARNING. 41 This command is used to send a notification ab 41 This command is used to send a notification about any of the above mentioned 42 events. Each message has six attributes. These 42 events. Each message has six attributes. These are (type of the argument is 43 in parentheses): 43 in parentheses): 44 44 45 QUOTA_NL_A_QTYPE (u32) 45 QUOTA_NL_A_QTYPE (u32) 46 - type of quota being exceeded (one 46 - type of quota being exceeded (one of USRQUOTA, GRPQUOTA) 47 QUOTA_NL_A_EXCESS_ID (u64) 47 QUOTA_NL_A_EXCESS_ID (u64) 48 - UID/GID (depends on quota type) of 48 - UID/GID (depends on quota type) of user / group whose limit 49 is being exceeded. 49 is being exceeded. 50 QUOTA_NL_A_CAUSED_ID (u64) 50 QUOTA_NL_A_CAUSED_ID (u64) 51 - UID of a user who caused the event 51 - UID of a user who caused the event 52 QUOTA_NL_A_WARNING (u32) 52 QUOTA_NL_A_WARNING (u32) 53 - what kind of limit is exceeded: 53 - what kind of limit is exceeded: 54 54 55 QUOTA_NL_IHARDWARN 55 QUOTA_NL_IHARDWARN 56 inode hardlimit 56 inode hardlimit 57 QUOTA_NL_ISOFTLONGWARN 57 QUOTA_NL_ISOFTLONGWARN 58 inode softlimit is exceede 58 inode softlimit is exceeded longer 59 than given grace period 59 than given grace period 60 QUOTA_NL_ISOFTWARN 60 QUOTA_NL_ISOFTWARN 61 inode softlimit 61 inode softlimit 62 QUOTA_NL_BHARDWARN 62 QUOTA_NL_BHARDWARN 63 space (block) hardlimit 63 space (block) hardlimit 64 QUOTA_NL_BSOFTLONGWARN 64 QUOTA_NL_BSOFTLONGWARN 65 space (block) softlimit is 65 space (block) softlimit is exceeded 66 longer than given grace pe 66 longer than given grace period. 67 QUOTA_NL_BSOFTWARN 67 QUOTA_NL_BSOFTWARN 68 space (block) softlimit 68 space (block) softlimit 69 69 70 - four warnings are also defined for 70 - four warnings are also defined for the event when user stops 71 exceeding some limit: 71 exceeding some limit: 72 72 73 QUOTA_NL_IHARDBELOW 73 QUOTA_NL_IHARDBELOW 74 inode hardlimit 74 inode hardlimit 75 QUOTA_NL_ISOFTBELOW 75 QUOTA_NL_ISOFTBELOW 76 inode softlimit 76 inode softlimit 77 QUOTA_NL_BHARDBELOW 77 QUOTA_NL_BHARDBELOW 78 space (block) hardlimit 78 space (block) hardlimit 79 QUOTA_NL_BSOFTBELOW 79 QUOTA_NL_BSOFTBELOW 80 space (block) softlimit 80 space (block) softlimit 81 81 82 QUOTA_NL_A_DEV_MAJOR (u32) 82 QUOTA_NL_A_DEV_MAJOR (u32) 83 - major number of a device with the 83 - major number of a device with the affected filesystem 84 QUOTA_NL_A_DEV_MINOR (u32) 84 QUOTA_NL_A_DEV_MINOR (u32) 85 - minor number of a device with the 85 - minor number of a device with the affected filesystem
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.