
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
