At implmenting high/low watermark in res_counter, it will be better to
adjust high/low value when limit changes. (or don't allow user to specify
high/low value)

This patch adds *internal* interface to modify resource value.
(If there are only limit/usage/failcnt, these routines are not necessary but..)
And will be used later.

Signed-off-by: KAMEZAWA Hiroyuki <[EMAIL PROTECTED]>

 include/linux/res_counter.h |    7 +++++++
 kernel/res_counter.c        |   19 +++++++++++++++++++
 2 files changed, 26 insertions(+)

Index: linux-2.6.24-rc3-mm1/include/linux/res_counter.h
===================================================================
--- linux-2.6.24-rc3-mm1.orig/include/linux/res_counter.h       2007-11-28 
14:18:21.000000000 +0900
+++ linux-2.6.24-rc3-mm1/include/linux/res_counter.h    2007-11-28 
14:18:33.000000000 +0900
@@ -59,6 +59,13 @@
                int (*write_strategy)(char *buf, unsigned long long *val));
 
 /*
+ * A routine for set/get limitation value from kernel internal code.
+ * res->lock should be held before call this.
+ */
+unsigned long long res_counter_get(struct res_counter *counter, int member);
+void res_counter_set(struct res_counter *conter, int member,
+                       unsigned long long val);
+/*
  * the field descriptors. one for each member of res_counter
  */
 
Index: linux-2.6.24-rc3-mm1/kernel/res_counter.c
===================================================================
--- linux-2.6.24-rc3-mm1.orig/kernel/res_counter.c      2007-11-28 
14:18:21.000000000 +0900
+++ linux-2.6.24-rc3-mm1/kernel/res_counter.c   2007-11-28 14:18:33.000000000 
+0900
@@ -75,6 +75,25 @@
        return NULL;
 }
 
+unsigned long long res_counter_get(struct res_counter *res, int member)
+{
+       unsigned long long *val;
+
+       val = res_counter_member(res, member);
+
+       return *val;
+}
+
+void res_counter_set(struct res_counter *res, int member,
+                       unsigned long long newval)
+{
+       unsigned long long *val;
+
+       val = res_counter_member(res, member);
+       *val = newval;
+       return;
+}
+
 ssize_t res_counter_read(struct res_counter *counter, int member,
                const char __user *userbuf, size_t nbytes, loff_t *pos,
                int (*read_strategy)(unsigned long long val, char *st_buf))

_______________________________________________
Containers mailing list
[EMAIL PROTECTED]
https://lists.linux-foundation.org/mailman/listinfo/containers

_______________________________________________
Devel mailing list
[email protected]
https://openvz.org/mailman/listinfo/devel

Reply via email to