This reverts commit 66d346ff5c3f700969d759cc9e1d1eadf5eab83d. We don't really need this stuff as this just mimics different cgroups.
https://jira.sw.ru/browse/PSBM-80807 Signed-off-by: Andrey Ryabinin <[email protected]> --- include/linux/ve.h | 5 - include/uapi/linux/beancounter.h | 66 ------- kernel/ve/bc/Makefile | 2 +- kernel/ve/bc/proc.c | 17 -- kernel/ve/bc/proc.h | 5 - kernel/ve/bc/resources.c | 307 ------------------------------- 6 files changed, 1 insertion(+), 401 deletions(-) delete mode 100644 include/uapi/linux/beancounter.h delete mode 100644 kernel/ve/bc/resources.c diff --git a/include/linux/ve.h b/include/linux/ve.h index 4f8c06b98381..44593c5cc3ed 100644 --- a/include/linux/ve.h +++ b/include/linux/ve.h @@ -16,8 +16,6 @@ #include <linux/kthread.h> #include <linux/binfmts.h> -#include <uapi/linux/beancounter.h> - struct nsproxy; struct veip_struct; struct user_namespace; @@ -97,7 +95,6 @@ struct ve_struct { #endif struct proc_dir_entry *ub_proc; - struct ubparm ub_parms[UB_RESOURCES]; }; #define VE_MEMINFO_DEFAULT 1 /* default behaviour */ @@ -110,8 +107,6 @@ extern int nr_ve; #define capable_setveid() \ (ve_is_super(get_exec_env()) && capable(CAP_SYS_ADMIN)) -#define UB_MAXVALUE ((1UL << (sizeof(unsigned long ) * 8 - 1)) - 1) - #ifdef CONFIG_VE extern struct ve_struct *get_ve(struct ve_struct *ve); extern void put_ve(struct ve_struct *ve); diff --git a/include/uapi/linux/beancounter.h b/include/uapi/linux/beancounter.h deleted file mode 100644 index 1bcb67e82927..000000000000 --- a/include/uapi/linux/beancounter.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * kernel/ve/bc/resources.c - * - * Copyright (c) 2000-2018 Virtuozzo International GmbH. - * All rights reserved. - * - */ - -#ifndef _UAPI_LINUX_BEANCOUNTER_H -#define _UAPI_LINUX_BEANCOUNTER_H - -/* - * Resource list. - */ -#define UB_KMEMSIZE 0 /* Unswappable kernel memory size including - * struct task, page directories, etc. */ -#define UB_LOCKEDPAGES 1 /* Mlock()ed pages. */ -#define UB_PRIVVMPAGES 2 /* Total number of pages, counting potentially - * private pages as private and used. */ -#define UB_SHMPAGES 3 /* IPC SHM segment size. */ -#define UB_DUMMY 4 /* Dummy resource (compatibility) */ -#define UB_NUMPROC 5 /* Number of processes. */ -#define UB_PHYSPAGES 6 /* All resident pages, for swapout guarantee. */ -#define UB_VMGUARPAGES 7 /* Guarantee for memory allocation, - * checked against PRIVVMPAGES. */ -#define UB_OOMGUARPAGES 8 /* Guarantees against OOM kill. - * Only limit is used, no accounting. */ -#define UB_NUMTCPSOCK 9 /* Number of TCP sockets. */ -#define UB_NUMFLOCK 10 /* Number of file locks. */ -#define UB_NUMPTY 11 /* Number of PTYs. */ -#define UB_NUMSIGINFO 12 /* Number of siginfos. */ -#define UB_TCPSNDBUF 13 /* Total size of tcp send buffers. */ -#define UB_TCPRCVBUF 14 /* Total size of tcp receive buffers. */ -#define UB_OTHERSOCKBUF 15 /* Total size of other socket - * send buffers (all buffers for PF_UNIX). */ -#define UB_DGRAMRCVBUF 16 /* Total size of other socket - * receive buffers. */ -#define UB_NUMOTHERSOCK 17 /* Number of other sockets. */ -#define UB_DCACHESIZE 18 /* Size of busy dentry/inode cache. */ -#define UB_NUMFILE 19 /* Number of open files. */ - -#define UB_RESOURCES_COMPAT 24 - -/* - * Add new resources here. - */ -#define UB_NUMXTENT 23 -#define UB_SWAPPAGES 24 -#define UB_RESOURCES 25 - -struct ubparm { - /* - * A barrier over which resource allocations are failed gracefully. - * If the amount of consumed memory is over the barrier further sbrk() - * or mmap() calls fail, the existing processes are not killed. - */ - unsigned long barrier; - unsigned long limit; /* hard resource limit */ - unsigned long held; /* consumed resources */ - unsigned long maxheld; /* maximum amount of consumed resources through the last period */ - unsigned long minheld; /* minimum amount of consumed resources through the last period */ - unsigned long failcnt; /* count of failed charges */ - int max_precharge; /* maximum percpu resource precharge */ -}; - -#endif /* _UAPI_LINUX_BEANCOUNTER_H */ diff --git a/kernel/ve/bc/Makefile b/kernel/ve/bc/Makefile index 0071c6bc3c20..c6ec2226e61e 100644 --- a/kernel/ve/bc/Makefile +++ b/kernel/ve/bc/Makefile @@ -4,4 +4,4 @@ # Copyright (c) 2000-2017 Virtuozzo International GmbH. All rights reserved. # -obj-$(CONFIG_VE) += proc.o resources.o +obj-$(CONFIG_VE) += proc.o diff --git a/kernel/ve/bc/proc.c b/kernel/ve/bc/proc.c index 4197e51a4c4a..12c57b509496 100644 --- a/kernel/ve/bc/proc.c +++ b/kernel/ve/bc/proc.c @@ -22,38 +22,21 @@ static const char *ve_get_name(struct ve_struct *ve) void ub_remove_proc(struct ve_struct *ve) { - ub_proc_ve_resources_remove(ve); remove_proc_entry(ve_get_name(ve), bc_proc_root); ve->ub_proc = NULL; } int ub_create_proc(struct ve_struct *ve) { - int err; - ve->ub_proc = proc_mkdir(ve_get_name(ve), bc_proc_root); if (!ve->ub_proc) return -ENOMEM; - err = ub_proc_ve_resources_create(ve); - if (err) - goto remove_ub_proc; - return 0; - -remove_ub_proc: - remove_proc_entry(ve_get_name(ve), bc_proc_root); - return err; } static int __init ub_init_proc(void) { - int err; - - err = ub_proc_all_resources_create(); - if (err) - return err; - return ub_create_proc(get_ve0()); } core_initcall(ub_init_proc); diff --git a/kernel/ve/bc/proc.h b/kernel/ve/bc/proc.h index 9e6c48e0079d..05a0c48da292 100644 --- a/kernel/ve/bc/proc.h +++ b/kernel/ve/bc/proc.h @@ -17,9 +17,4 @@ extern struct proc_dir_entry *bc_proc_root; void ub_remove_proc(struct ve_struct *ve); int ub_create_proc(struct ve_struct *ve); -int ub_proc_ve_resources_create(struct ve_struct *ve); -void ub_proc_ve_resources_remove(struct ve_struct *ve); - -int ub_proc_all_resources_create(void); - #endif diff --git a/kernel/ve/bc/resources.c b/kernel/ve/bc/resources.c deleted file mode 100644 index 343e3d82fd98..000000000000 --- a/kernel/ve/bc/resources.c +++ /dev/null @@ -1,307 +0,0 @@ -/* - * kernel/ve/bc/resources.c - * - * Copyright (c) 2000-2018 Virtuozzo International GmbH. - * All rights reserved. - * - */ - -#include <linux/proc_fs.h> -#include <linux/nsproxy.h> -#include <linux/ve.h> - -#include <uapi/linux/beancounter.h> -#include <net/net_namespace.h> - -#include "proc.h" - -/* Generic output formats */ -const char *bc_proc_lu_fmt = "\t%-20s %21lu\n"; -const char *bc_proc_lu_lfmt = "\t%-20s %21lu\n"; -const char *bc_proc_llu_fmt = "\t%-20s %21llu\n"; -const char *bc_proc_lu_lu_fmt = "\t%-20s %21lu %21lu\n"; - -static const char *head_fmt = "%10s %-12s %20s %20s %20s %20s %20s\n"; -static const char *res_fmt = "%10s%c %-12s %20lu %20lu %20lu %20lu %20lu\n"; - -static const char *ub_rnames[] = { - "kmemsize", /* 0 */ - "lockedpages", - "privvmpages", - "shmpages", - "dummy", - "numproc", /* 5 */ - "physpages", - "vmguarpages", - "oomguarpages", - "numtcpsock", - "numflock", /* 10 */ - "numpty", - "numsiginfo", - "tcpsndbuf", - "tcprcvbuf", - "othersockbuf", /* 15 */ - "dgramrcvbuf", - "numothersock", - "dcachesize", - "numfile", - "dummy", /* 20 */ - "dummy", - "dummy", - "numiptent", - "swappages", -}; - -static void *ve_to_pde(struct ve_struct *ve) -{ - return (void *)(unsigned long)ve->veid; -} - -static struct ve_struct *get_ve_by_inode(struct inode *inode) -{ - envid_t veid = (envid_t)(unsigned long)PDE_DATA(inode); - - if (veid) - return get_ve_by_id(veid); - return get_ve(get_ve0()); -} - -static const char *ve_get_name(struct ve_struct *ve) -{ - static const char *ve0_name = "0"; - - if (ve_is_super(ve)) - return ve0_name; - return ve->ve_name; -} - -static struct nsproxy *get_nsproxy_by_ve(struct ve_struct *ve) -{ - struct nsproxy *nsproxy; - - rcu_read_lock(); - nsproxy = rcu_dereference(ve->ve_ns); - if (nsproxy) - get_nsproxy(nsproxy); - rcu_read_unlock(); - return nsproxy; -} - -static void ub_show_res(struct seq_file *f, struct ubparm *p, const char *name, - int r, int precharge, int show_uid) -{ - - unsigned long held; - - - held = p->held; - held = (held > precharge) ? (held - precharge) : 0; - - seq_printf(f, res_fmt, - show_uid && r == 0 ? name : "", - show_uid && r == 0 ? ':' : ' ', - ub_rnames[r], - held, - p->maxheld, - p->barrier, - p->limit, - p->failcnt); -} - -static void cgroups_sync_ub(struct css_set *cset, struct ubparm *ub_parms) -{ -} - -static void __show_resources(struct seq_file *f, struct ve_struct *ve, - struct nsproxy *nsproxy, int show_uid) -{ - int r, precharge[UB_RESOURCES] = { }; - - cgroups_sync_ub(nsproxy->cgroup_ns->root_cset, ve->ub_parms); - - for (r = 0; r < UB_RESOURCES; r++) - if (strcmp(ub_rnames[r], "dummy") != 0) - ub_show_res(f, &ve->ub_parms[r], ve_get_name(ve), r, - precharge[r], show_uid); -} - -static int res_show(struct seq_file *f, void *v) -{ - struct ve_struct *ve = (struct ve_struct *)v; - struct nsproxy *nsproxy; - - nsproxy = get_nsproxy_by_ve(ve); - if (nsproxy) { - __show_resources(f, ve, nsproxy, 1); - put_nsproxy(nsproxy); - } - return 0; -} - -static int ve_accessible(struct ve_struct *target) -{ - return (get_exec_env() == get_ve0() || get_exec_env() == target); -} - -static void ub_show_header(struct seq_file *f) -{ - seq_printf(f, "Version: 2.5\n"); - seq_printf(f, head_fmt, "uid", "resource", - "held", "maxheld", "barrier", "limit", "failcnt"); -} - -static int bc_res_show(struct seq_file *f, void *v) -{ - struct nsproxy *nsproxy = (struct nsproxy *)f->private; - - __show_resources(f, nsproxy->net_ns->owner_ve, nsproxy, 0); - return 0; -} - -static int bc_res_open(struct inode *inode, struct file *filp) -{ - struct ve_struct *ve; - struct nsproxy *nsproxy; - int res; - - if (!(capable(CAP_DAC_OVERRIDE) && capable(CAP_DAC_READ_SEARCH))) - return -EACCES; - - ve = get_ve_by_inode(inode); - if (!ve) - return -EINVAL; - - nsproxy = get_nsproxy_by_ve(ve); - if (!nsproxy) { - put_ve(ve); - return -ENODEV; - } - - res = single_open(filp, bc_res_show, nsproxy); - if (res) { - put_nsproxy(nsproxy); - put_ve(ve); - return res; - } - - return 0; -} - -static int bc_res_release(struct inode *inode, struct file *file) -{ - struct nsproxy *nsproxy = ((struct seq_file *)file->private_data)->private; - struct ve_struct *ve = nsproxy->net_ns->owner_ve; - - put_nsproxy(nsproxy); - put_ve(ve); - - return single_release(inode, file); -} - -static struct file_operations resources_operations = { - .open = bc_res_open, - .read = seq_read, - .llseek = seq_lseek, - .release = bc_res_release, -}; - -static void *ub_start(struct seq_file *f, loff_t *ppos) -{ - struct ve_struct *ve; - unsigned long pos; - - pos = *ppos; - if (pos == 0) - ub_show_header(f); - - mutex_lock(&ve_list_lock); - for_each_ve(ve) { - if (!ve_accessible(ve)) - continue; - if (!get_ve(ve)) - continue; - if (pos-- == 0) - return ve; - put_ve(ve); - } - mutex_unlock(&ve_list_lock); - return NULL; -} - -static void *ub_next(struct seq_file *f, void *v, loff_t *ppos) -{ - struct ve_struct *ve = (struct ve_struct *)v; - - for_each_ve_continue(ve) { - if (!ve_accessible(ve)) - continue; - if (!get_ve(ve)) - continue; - (*ppos)++; - return ve; - } - return NULL; -} - -static void ub_stop(struct seq_file *f, void *v) -{ - struct ve_struct *ve = (struct ve_struct *)v; - - mutex_unlock(&ve_list_lock); - put_ve(ve); -} - -static struct seq_operations all_res_seq_ops = { - .start = ub_start, - .next = ub_next, - .stop = ub_stop, - .show = res_show, -}; - -static int all_res_open(struct inode *inode, struct file *filp) -{ - if (!(capable(CAP_DAC_OVERRIDE) && capable(CAP_DAC_READ_SEARCH))) - return -EACCES; - - return seq_open(filp, &all_res_seq_ops); -} - -static struct file_operations all_resources_operations = { - .open = all_res_open, - .read = seq_read, - .llseek = seq_lseek, - .release = seq_release, -}; - -void ub_proc_ve_resources_remove(struct ve_struct *ve) -{ - remove_proc_entry("resources", ve->ub_proc); -} - -static void ub_ve_resources_init(struct ve_struct *ve) -{ - int r; - struct ubparm *p; - - for (r = 0, p = &ve->ub_parms[0]; r < UB_RESOURCES; r++, p++) - p->barrier = p->limit = UB_MAXVALUE; -} - -int ub_proc_ve_resources_create(struct ve_struct *ve) -{ - ub_ve_resources_init(ve); - - if (!proc_create_data("resources", S_IRUSR|S_ISVTX, - ve->ub_proc, &resources_operations, - ve_to_pde(ve))) - return -ENOMEM; - return 0; -} - -int ub_proc_all_resources_create(void) -{ - if (!proc_create("resources", S_IRUSR|S_ISVTX, - bc_proc_root, &all_resources_operations)) - return -ENOMEM; - return 0; -} -- 2.26.2 _______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
