diff options
author | Patrick Mooney <patrick.f.mooney@gmail.com> | 2015-08-04 15:52:48 +0000 |
---|---|---|
committer | Patrick Mooney <patrick.f.mooney@gmail.com> | 2015-08-04 18:47:38 +0000 |
commit | dce089d96bbdc5fef438dd1db4e4c2c6cfb1e3fe (patch) | |
tree | ebf031c2abfeb0062f19a0e8480aa62c17589852 | |
parent | 710216a4b4dd849bd21b2d9b754036777a856236 (diff) | |
download | illumos-joyent-dce089d96bbdc5fef438dd1db4e4c2c6cfb1e3fe.tar.gz |
OS-4594 lxbrand needs /proc/sys/vm/overcommit_memory
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
-rw-r--r-- | usr/src/uts/common/brand/lx/procfs/lx_proc.h | 9 | ||||
-rw-r--r-- | usr/src/uts/common/brand/lx/procfs/lx_prsubr.c | 3 | ||||
-rw-r--r-- | usr/src/uts/common/brand/lx/procfs/lx_prvnops.c | 21 |
3 files changed, 26 insertions, 7 deletions
diff --git a/usr/src/uts/common/brand/lx/procfs/lx_proc.h b/usr/src/uts/common/brand/lx/procfs/lx_proc.h index a2ea2aa7a7..29156c454d 100644 --- a/usr/src/uts/common/brand/lx/procfs/lx_proc.h +++ b/usr/src/uts/common/brand/lx/procfs/lx_proc.h @@ -207,10 +207,11 @@ typedef enum lxpr_nodetype { LXPR_SYS_KERNEL_RAND_BOOTID, /* /proc/sys/kernel/random/boot_id */ LXPR_SYS_KERNEL_SHMMAX, /* /proc/sys/kernel/shmmax */ LXPR_SYS_KERNEL_THREADS_MAX, /* /proc/sys/kernel/threads-max */ - LXPR_SYS_VMDIR, /* /proc/sys/vm */ - LXPR_SYS_VM_MINFR_KB, /* /proc/sys/vm/min_free_kbytes */ - LXPR_SYS_VM_NHUGEP, /* /proc/sys/vm/nr_hugepages */ - LXPR_SYS_VM_SWAPPINESS, /* /proc/sys/vm/swappiness */ + LXPR_SYS_VMDIR, /* /proc/sys/vm */ + LXPR_SYS_VM_MINFR_KB, /* /proc/sys/vm/min_free_kbytes */ + LXPR_SYS_VM_NHUGEP, /* /proc/sys/vm/nr_hugepages */ + LXPR_SYS_VM_OVERCOMMIT_MEM, /* /proc/sys/vm/overcommit_memory */ + LXPR_SYS_VM_SWAPPINESS, /* /proc/sys/vm/swappiness */ LXPR_UPTIME, /* /proc/uptime */ LXPR_VERSION, /* /proc/version */ LXPR_NFILES /* number of lx /proc file types */ diff --git a/usr/src/uts/common/brand/lx/procfs/lx_prsubr.c b/usr/src/uts/common/brand/lx/procfs/lx_prsubr.c index bfc710a6e5..08cac61b52 100644 --- a/usr/src/uts/common/brand/lx/procfs/lx_prsubr.c +++ b/usr/src/uts/common/brand/lx/procfs/lx_prsubr.c @@ -534,9 +534,10 @@ lxpr_getnode(vnode_t *dp, lxpr_nodetype_t type, proc_t *p, int desc) lxpnp->lxpr_mode = 0400; /* read-only by owner only */ break; - case LXPR_SYS_VM_SWAPPINESS: case LXPR_PID_OOM_SCR_ADJ: case LXPR_PID_TID_OOM_SCR_ADJ: + case LXPR_SYS_VM_OVERCOMMIT_MEM: + case LXPR_SYS_VM_SWAPPINESS: vp->v_type = VREG; lxpnp->lxpr_mode = 0644; break; diff --git a/usr/src/uts/common/brand/lx/procfs/lx_prvnops.c b/usr/src/uts/common/brand/lx/procfs/lx_prvnops.c index 2ffc71014a..97548d1560 100644 --- a/usr/src/uts/common/brand/lx/procfs/lx_prvnops.c +++ b/usr/src/uts/common/brand/lx/procfs/lx_prvnops.c @@ -213,6 +213,7 @@ static void lxpr_read_sys_kernel_shmmax(lxpr_node_t *, lxpr_uiobuf_t *); static void lxpr_read_sys_kernel_threads_max(lxpr_node_t *, lxpr_uiobuf_t *); static void lxpr_read_sys_vm_minfr_kb(lxpr_node_t *, lxpr_uiobuf_t *); static void lxpr_read_sys_vm_nhpages(lxpr_node_t *, lxpr_uiobuf_t *); +static void lxpr_read_sys_vm_overcommit_mem(lxpr_node_t *, lxpr_uiobuf_t *); static void lxpr_read_sys_vm_swappiness(lxpr_node_t *, lxpr_uiobuf_t *); /* @@ -466,6 +467,7 @@ static lxpr_dirent_t sys_randdir[] = { static lxpr_dirent_t sys_vmdir[] = { { LXPR_SYS_VM_MINFR_KB, "min_free_kbytes" }, { LXPR_SYS_VM_NHUGEP, "nr_hugepages" }, + { LXPR_SYS_VM_OVERCOMMIT_MEM, "overcommit_memory" }, { LXPR_SYS_VM_SWAPPINESS, "swappiness" }, }; @@ -488,6 +490,7 @@ lxpr_open(vnode_t **vpp, int flag, cred_t *cr, caller_context_t *ct) switch (type) { case LXPR_PID_OOM_SCR_ADJ: case LXPR_PID_TID_OOM_SCR_ADJ: + case LXPR_SYS_VM_OVERCOMMIT_MEM: case LXPR_SYS_VM_SWAPPINESS: break; default: @@ -662,6 +665,7 @@ static void (*lxpr_read_function[LXPR_NFILES])() = { lxpr_read_invalid, /* /proc/sys/vm */ lxpr_read_sys_vm_minfr_kb, /* /proc/sys/vm/min_free_kbytes */ lxpr_read_sys_vm_nhpages, /* /proc/sys/vm/nr_hugepages */ + lxpr_read_sys_vm_overcommit_mem, /* /proc/sys/vm/overcommit_memory */ lxpr_read_sys_vm_swappiness, /* /proc/sys/vm/swappiness */ lxpr_read_uptime, /* /proc/uptime */ lxpr_read_version, /* /proc/version */ @@ -775,6 +779,7 @@ static vnode_t *(*lxpr_lookup_function[LXPR_NFILES])() = { lxpr_lookup_sys_vmdir, /* /proc/sys/vm */ lxpr_lookup_not_a_dir, /* /proc/sys/vm/min_free_kbytes */ lxpr_lookup_not_a_dir, /* /proc/sys/vm/nr_hugepages */ + lxpr_lookup_not_a_dir, /* /proc/sys/vm/overcommit_memory */ lxpr_lookup_not_a_dir, /* /proc/sys/vm/swappiness */ lxpr_lookup_not_a_dir, /* /proc/uptime */ lxpr_lookup_not_a_dir, /* /proc/version */ @@ -888,6 +893,7 @@ static int (*lxpr_readdir_function[LXPR_NFILES])() = { lxpr_readdir_sys_vmdir, /* /proc/sys/vm */ lxpr_readdir_not_a_dir, /* /proc/sys/vm/min_free_kbytes */ lxpr_readdir_not_a_dir, /* /proc/sys/vm/nr_hugepages */ + lxpr_readdir_not_a_dir, /* /proc/sys/vm/overcommit_memory */ lxpr_readdir_not_a_dir, /* /proc/sys/vm/swappiness */ lxpr_readdir_not_a_dir, /* /proc/uptime */ lxpr_readdir_not_a_dir, /* /proc/version */ @@ -3878,6 +3884,13 @@ lxpr_read_sys_vm_nhpages(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) } static void +lxpr_read_sys_vm_overcommit_mem(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) +{ + ASSERT(lxpnp->lxpr_type == LXPR_SYS_VM_OVERCOMMIT_MEM); + lxpr_uiobuf_printf(uiobuf, "%d\n", 0); +} + +static void lxpr_read_sys_vm_swappiness(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { ASSERT(lxpnp->lxpr_type == LXPR_SYS_VM_SWAPPINESS); @@ -4312,9 +4325,10 @@ lxpr_access(vnode_t *vp, int mode, int flags, cred_t *cr, caller_context_t *ct) /* lx /proc is a read only file system */ if (mode & VWRITE) { switch (type) { - case LXPR_SYS_VM_SWAPPINESS: case LXPR_PID_OOM_SCR_ADJ: case LXPR_PID_TID_OOM_SCR_ADJ: + case LXPR_SYS_VM_OVERCOMMIT_MEM: + case LXPR_SYS_VM_SWAPPINESS: break; default: return (EROFS); @@ -5742,6 +5756,7 @@ lxpr_create(struct vnode *dvp, char *nm, struct vattr *vap, * We're currently restricting O_CREAT to: * - /proc/<pid>/oom_score_adj * - /proc/<pid>/task/<tid>/oom_score_adj + * - /proc/sys/vm/overcommit_memory * - /proc/sys/vm/swappiness */ if ((type == LXPR_PIDDIR || type == LXPR_PID_TASK_IDDIR) && @@ -5753,7 +5768,9 @@ lxpr_create(struct vnode *dvp, char *nm, struct vattr *vap, PIDDIRFILES); } lxpr_unlock(p); - } else if (type == LXPR_SYS_VMDIR && strcmp(nm, "swappiness") == 0) { + } else if (type == LXPR_SYS_VMDIR && + (strcmp(nm, "overcommit_memory") == 0 || + strcmp(nm, "swappiness") == 0)) { vp = lxpr_lookup_common(dvp, nm, NULL, sys_vmdir, SYS_VMDIRFILES); } |