aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/quota.h
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2008-10-02 10:48:10 -0400
committerMark Fasheh <mfasheh@suse.com>2009-01-05 11:40:22 -0500
commit4d59bce4f9eaf26d6d9046b56a2f1c0c7f20981d (patch)
tree8acb07cd2bf0ab360e6397dfa816feb009fc49af /include/linux/quota.h
parentdb49d2df489f727096438706a5428115e84a3f0d (diff)
quota: Keep which entries were set by SETQUOTA quotactl
Quota in a clustered environment needs to synchronize quota information among cluster nodes. This means we have to occasionally update some information in dquot from disk / network. On the other hand we have to be careful not to overwrite changes administrator did via SETQUOTA. So indicate in dquot->dq_flags which entries have been set by SETQUOTA and quota format can clear these flags when it properly propagated the changes. Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Mark Fasheh <mfasheh@suse.com>
Diffstat (limited to 'include/linux/quota.h')
-rw-r--r--include/linux/quota.h26
1 files changed, 20 insertions, 6 deletions
diff --git a/include/linux/quota.h b/include/linux/quota.h
index 75bf761caef2..6d98885c16da 100644
--- a/include/linux/quota.h
+++ b/include/linux/quota.h
@@ -80,12 +80,21 @@
80 * Quota structure used for communication with userspace via quotactl 80 * Quota structure used for communication with userspace via quotactl
81 * Following flags are used to specify which fields are valid 81 * Following flags are used to specify which fields are valid
82 */ 82 */
83#define QIF_BLIMITS 1 83enum {
84#define QIF_SPACE 2 84 QIF_BLIMITS_B = 0,
85#define QIF_ILIMITS 4 85 QIF_SPACE_B,
86#define QIF_INODES 8 86 QIF_ILIMITS_B,
87#define QIF_BTIME 16 87 QIF_INODES_B,
88#define QIF_ITIME 32 88 QIF_BTIME_B,
89 QIF_ITIME_B,
90};
91
92#define QIF_BLIMITS (1 << QIF_BLIMITS_B)
93#define QIF_SPACE (1 << QIF_SPACE_B)
94#define QIF_ILIMITS (1 << QIF_ILIMITS_B)
95#define QIF_INODES (1 << QIF_INODES_B)
96#define QIF_BTIME (1 << QIF_BTIME_B)
97#define QIF_ITIME (1 << QIF_ITIME_B)
89#define QIF_LIMITS (QIF_BLIMITS | QIF_ILIMITS) 98#define QIF_LIMITS (QIF_BLIMITS | QIF_ILIMITS)
90#define QIF_USAGE (QIF_SPACE | QIF_INODES) 99#define QIF_USAGE (QIF_SPACE | QIF_INODES)
91#define QIF_TIMES (QIF_BTIME | QIF_ITIME) 100#define QIF_TIMES (QIF_BTIME | QIF_ITIME)
@@ -242,6 +251,11 @@ extern struct dqstats dqstats;
242#define DQ_FAKE_B 3 /* no limits only usage */ 251#define DQ_FAKE_B 3 /* no limits only usage */
243#define DQ_READ_B 4 /* dquot was read into memory */ 252#define DQ_READ_B 4 /* dquot was read into memory */
244#define DQ_ACTIVE_B 5 /* dquot is active (dquot_release not called) */ 253#define DQ_ACTIVE_B 5 /* dquot is active (dquot_release not called) */
254#define DQ_LASTSET_B 6 /* Following 6 bits (see QIF_) are reserved\
255 * for the mask of entries set via SETQUOTA\
256 * quotactl. They are set under dq_data_lock\
257 * and the quota format handling dquot can\
258 * clear them when it sees fit. */
245 259
246struct dquot { 260struct dquot {
247 struct hlist_node dq_hash; /* Hash list in memory */ 261 struct hlist_node dq_hash; /* Hash list in memory */