quota: send messages via netlink
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 <jack@suse.cz> Cc: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
59
Documentation/filesystems/quota.txt
Normal file
59
Documentation/filesystems/quota.txt
Normal file
@ -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
|
Reference in New Issue
Block a user