diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2008-04-29 04:00:17 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-29 11:06:10 -0400 |
commit | c84872e168d10926acd2dee975d19172eef79252 (patch) | |
tree | c28f4f87ad38b524fe2a4c1e0e590bea3aacd92a /include | |
parent | cf475ad28ac35cc9ba612d67158f29b73b38b05d (diff) |
memcgroup: add the max_usage member on the res_counter
This field is the maximal value of the usage one since the counter creation
(or since the latest reset).
To reset this to the usage value simply write anything to the appropriate
cgroup file.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Acked-by: Balbir Singh <balbir@linux.vnet.ibm.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/res_counter.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/res_counter.h b/include/linux/res_counter.h index 8cb1ecd420a9..df8085acba16 100644 --- a/include/linux/res_counter.h +++ b/include/linux/res_counter.h | |||
@@ -25,6 +25,10 @@ struct res_counter { | |||
25 | */ | 25 | */ |
26 | unsigned long long usage; | 26 | unsigned long long usage; |
27 | /* | 27 | /* |
28 | * the maximal value of the usage from the counter creation | ||
29 | */ | ||
30 | unsigned long long max_usage; | ||
31 | /* | ||
28 | * the limit that usage cannot exceed | 32 | * the limit that usage cannot exceed |
29 | */ | 33 | */ |
30 | unsigned long long limit; | 34 | unsigned long long limit; |
@@ -67,6 +71,7 @@ ssize_t res_counter_write(struct res_counter *counter, int member, | |||
67 | 71 | ||
68 | enum { | 72 | enum { |
69 | RES_USAGE, | 73 | RES_USAGE, |
74 | RES_MAX_USAGE, | ||
70 | RES_LIMIT, | 75 | RES_LIMIT, |
71 | RES_FAILCNT, | 76 | RES_FAILCNT, |
72 | }; | 77 | }; |
@@ -127,4 +132,13 @@ static inline bool res_counter_check_under_limit(struct res_counter *cnt) | |||
127 | return ret; | 132 | return ret; |
128 | } | 133 | } |
129 | 134 | ||
135 | static inline void res_counter_reset_max(struct res_counter *cnt) | ||
136 | { | ||
137 | unsigned long flags; | ||
138 | |||
139 | spin_lock_irqsave(&cnt->lock, flags); | ||
140 | cnt->max_usage = cnt->usage; | ||
141 | spin_unlock_irqrestore(&cnt->lock, flags); | ||
142 | } | ||
143 | |||
130 | #endif | 144 | #endif |