forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implement sending of quota messages via netlink interface. The advantage is that in userspace we can better decide what to do with the message - for example display a dialogue in your X session or just write the message to the console. As a bonus, we can get rid of problems with console locking deep inside filesystem code once we remove the old printing mechanism. Signed-off-by: Jan Kara <[email protected]> Cc: Randy Dunlap <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
- Loading branch information
Showing
4 changed files
with
222 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
|
||
Quota subsystem | ||
=============== | ||
|
||
Quota subsystem allows system administrator to set limits on used space and | ||
number of used inodes (inode is a filesystem structure which is associated | ||
with each file or directory) for users and/or groups. For both used space and | ||
number of used inodes there are actually two limits. The first one is called | ||
softlimit and the second one hardlimit. An user can never exceed a hardlimit | ||
for any resource. User is allowed to exceed softlimit but only for limited | ||
period of time. This period is called "grace period" or "grace time". When | ||
grace time is over, user is not able to allocate more space/inodes until he | ||
frees enough of them to get below softlimit. | ||
|
||
Quota limits (and amount of grace time) are set independently for each | ||
filesystem. | ||
|
||
For more details about quota design, see the documentation in quota-tools package | ||
(http://sourceforge.net/projects/linuxquota). | ||
|
||
Quota netlink interface | ||
======================= | ||
When user exceeds a softlimit, runs out of grace time or reaches hardlimit, | ||
quota subsystem traditionally printed a message to the controlling terminal of | ||
the process which caused the excess. This method has the disadvantage that | ||
when user is using a graphical desktop he usually cannot see the message. | ||
Thus quota netlink interface has been designed to pass information about | ||
the above events to userspace. There they can be captured by an application | ||
and processed accordingly. | ||
|
||
The interface uses generic netlink framework (see | ||
http://lwn.net/Articles/208755/ and http://people.suug.ch/~tgr/libnl/ for more | ||
details about this layer). The name of the quota generic netlink interface | ||
is "VFS_DQUOT". Definitions of constants below are in <linux/quota.h>. | ||
Currently, the interface supports only one message type QUOTA_NL_C_WARNING. | ||
This command is used to send a notification about any of the above mentioned | ||
events. Each message has six attributes. These are (type of the argument is | ||
in parentheses): | ||
QUOTA_NL_A_QTYPE (u32) | ||
- type of quota being exceeded (one of USRQUOTA, GRPQUOTA) | ||
QUOTA_NL_A_EXCESS_ID (u64) | ||
- UID/GID (depends on quota type) of user / group whose limit | ||
is being exceeded. | ||
QUOTA_NL_A_CAUSED_ID (u64) | ||
- UID of a user who caused the event | ||
QUOTA_NL_A_WARNING (u32) | ||
- what kind of limit is exceeded: | ||
QUOTA_NL_IHARDWARN - inode hardlimit | ||
QUOTA_NL_ISOFTLONGWARN - inode softlimit is exceeded longer | ||
than given grace period | ||
QUOTA_NL_ISOFTWARN - inode softlimit | ||
QUOTA_NL_BHARDWARN - space (block) hardlimit | ||
QUOTA_NL_BSOFTLONGWARN - space (block) softlimit is exceeded | ||
longer than given grace period. | ||
QUOTA_NL_BSOFTWARN - space (block) softlimit | ||
QUOTA_NL_A_DEV_MAJOR (u32) | ||
- major number of a device with the affected filesystem | ||
QUOTA_NL_A_DEV_MINOR (u32) | ||
- minor number of a device with the affected filesystem |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.