From c2c89595335a349ef35293eac9cfa32b3de01409 Mon Sep 17 00:00:00 2001 From: Marc Fiuczynski Date: Thu, 2 Jun 2005 19:56:08 +0000 Subject: [PATCH] Fixed vlimit. This program lets us set various per-vserver limits. In particular, we can now set nproc limits (aka the vserver equivalent to CKRM numtasks). There are other limits that apparently just work, too, such as resident-set-size, number of open files, etc., that I'll start playing with, too. --- Makefile.in | 60 ++++++++++++++++++++++++++++++++++------------ src/Makefile-files | 5 +--- src/vlimit.c | 2 +- 3 files changed, 47 insertions(+), 20 deletions(-) diff --git a/Makefile.in b/Makefile.in index 44b4141..1a0afc4 100644 --- a/Makefile.in +++ b/Makefile.in @@ -35,7 +35,7 @@ -SOURCES = $(lib_libvserver_a_SOURCES) $(src_capchroot_SOURCES) $(src_chbind_SOURCES) $(src_chcontext_SOURCES) $(src_fakerunlevel_SOURCES) $(src_filetime_SOURCES) $(src_ifspec_SOURCES) $(src_listdevip_SOURCES) $(src_parserpmdump_SOURCES) $(src_readlink_SOURCES) $(src_rebootmgr_SOURCES) $(src_reducecap_SOURCES) $(src_showattr_SOURCES) $(src_showperm_SOURCES) $(src_vbuild_SOURCES) $(src_vcheck_SOURCES) $(src_vdlimit_SOURCES) $(src_vdu_SOURCES) $(src_vfiles_SOURCES) $(src_vkill_SOURCES) $(src_vreboot_SOURCES) $(src_vserver_stat_SOURCES) $(src_vsh_SOURCES) $(src_vunify_SOURCES) $(tests_escaperoot_SOURCES) $(tests_forkbomb_SOURCES) $(tests_testipc_SOURCES) $(tests_testlimit_SOURCES) $(tests_testopenf_SOURCES) +SOURCES = $(lib_libvserver_a_SOURCES) $(src_capchroot_SOURCES) $(src_chbind_SOURCES) $(src_chcontext_SOURCES) $(src_fakerunlevel_SOURCES) $(src_filetime_SOURCES) $(src_ifspec_SOURCES) $(src_listdevip_SOURCES) $(src_parserpmdump_SOURCES) $(src_readlink_SOURCES) $(src_rebootmgr_SOURCES) $(src_reducecap_SOURCES) $(src_showattr_SOURCES) $(src_showperm_SOURCES) $(src_vbuild_SOURCES) $(src_vcheck_SOURCES) $(src_vdlimit_SOURCES) $(src_vdu_SOURCES) $(src_vfiles_SOURCES) $(src_vkill_SOURCES) $(src_vlimit_SOURCES) $(src_vreboot_SOURCES) $(src_vserver_stat_SOURCES) $(src_vsh_SOURCES) $(src_vunify_SOURCES) $(tests_escaperoot_SOURCES) $(tests_forkbomb_SOURCES) $(tests_testipc_SOURCES) $(tests_testlimit_SOURCES) $(tests_testopenf_SOURCES) srcdir = @srcdir@ top_srcdir = @top_srcdir@ @@ -122,7 +122,8 @@ pkglibPROGRAMS_INSTALL = $(INSTALL_PROGRAM) am__EXEEXT_3 = src/chbind$(EXEEXT) src/chcontext$(EXEEXT) \ src/rebootmgr$(EXEEXT) src/reducecap$(EXEEXT) src/vdu$(EXEEXT) \ src/vsh$(EXEEXT) src/vdlimit$(EXEEXT) src/vfiles$(EXEEXT) \ - src/vkill$(EXEEXT) src/vserver-stat$(EXEEXT) + src/vkill$(EXEEXT) src/vserver-stat$(EXEEXT) \ + src/vlimit$(EXEEXT) sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(noinst_PROGRAMS) $(pkglib_PROGRAMS) $(sbin_PROGRAMS) am_src_capchroot_OBJECTS = src/capchroot.$(OBJEXT) @@ -182,6 +183,9 @@ src_vfiles_LDADD = $(LDADD) am_src_vkill_OBJECTS = src/src_vkill-vkill.$(OBJEXT) src_vkill_OBJECTS = $(am_src_vkill_OBJECTS) src_vkill_DEPENDENCIES = lib/libvserver.a +am_src_vlimit_OBJECTS = src/vlimit.$(OBJEXT) +src_vlimit_OBJECTS = $(am_src_vlimit_OBJECTS) +src_vlimit_DEPENDENCIES = lib/libvserver.a am_src_vreboot_OBJECTS = src/vreboot.$(OBJEXT) src_vreboot_OBJECTS = $(am_src_vreboot_OBJECTS) src_vreboot_LDADD = $(LDADD) @@ -243,7 +247,8 @@ am__depfiles_maybe = depfiles @AMDEP_TRUE@ src/$(DEPDIR)/src_vunify-vutil.Po \ @AMDEP_TRUE@ src/$(DEPDIR)/vbuild.Po src/$(DEPDIR)/vcheck.Po \ @AMDEP_TRUE@ src/$(DEPDIR)/vdlimit.Po src/$(DEPDIR)/vdu.Po \ -@AMDEP_TRUE@ src/$(DEPDIR)/vfiles.Po src/$(DEPDIR)/vreboot.Po \ +@AMDEP_TRUE@ src/$(DEPDIR)/vfiles.Po src/$(DEPDIR)/vlimit.Po \ +@AMDEP_TRUE@ src/$(DEPDIR)/vreboot.Po \ @AMDEP_TRUE@ src/$(DEPDIR)/vserver-stat.Po src/$(DEPDIR)/vsh.Po \ @AMDEP_TRUE@ src/$(DEPDIR)/vutil.Po \ @AMDEP_TRUE@ tests/$(DEPDIR)/escaperoot.Po \ @@ -270,11 +275,11 @@ SOURCES = $(lib_libvserver_a_SOURCES) $(src_capchroot_SOURCES) \ $(src_vbuild_SOURCES) $(src_vcheck_SOURCES) \ $(src_vdlimit_SOURCES) $(src_vdu_SOURCES) \ $(src_vfiles_SOURCES) $(src_vkill_SOURCES) \ - $(src_vreboot_SOURCES) $(src_vserver_stat_SOURCES) \ - $(src_vsh_SOURCES) $(src_vunify_SOURCES) \ - $(tests_escaperoot_SOURCES) $(tests_forkbomb_SOURCES) \ - $(tests_testipc_SOURCES) $(tests_testlimit_SOURCES) \ - $(tests_testopenf_SOURCES) + $(src_vlimit_SOURCES) $(src_vreboot_SOURCES) \ + $(src_vserver_stat_SOURCES) $(src_vsh_SOURCES) \ + $(src_vunify_SOURCES) $(tests_escaperoot_SOURCES) \ + $(tests_forkbomb_SOURCES) $(tests_testipc_SOURCES) \ + $(tests_testlimit_SOURCES) $(tests_testopenf_SOURCES) DIST_SOURCES = $(lib_libvserver_a_SOURCES) $(src_capchroot_SOURCES) \ $(src_chbind_SOURCES) $(src_chcontext_SOURCES) \ $(src_fakerunlevel_SOURCES) $(src_filetime_SOURCES) \ @@ -285,11 +290,11 @@ DIST_SOURCES = $(lib_libvserver_a_SOURCES) $(src_capchroot_SOURCES) \ $(src_vbuild_SOURCES) $(src_vcheck_SOURCES) \ $(src_vdlimit_SOURCES) $(src_vdu_SOURCES) \ $(src_vfiles_SOURCES) $(src_vkill_SOURCES) \ - $(src_vreboot_SOURCES) $(src_vserver_stat_SOURCES) \ - $(src_vsh_SOURCES) $(src_vunify_SOURCES) \ - $(tests_escaperoot_SOURCES) $(tests_forkbomb_SOURCES) \ - $(tests_testipc_SOURCES) $(tests_testlimit_SOURCES) \ - $(tests_testopenf_SOURCES) + $(src_vlimit_SOURCES) $(src_vreboot_SOURCES) \ + $(src_vserver_stat_SOURCES) $(src_vsh_SOURCES) \ + $(src_vunify_SOURCES) $(tests_escaperoot_SOURCES) \ + $(tests_forkbomb_SOURCES) $(tests_testipc_SOURCES) \ + $(tests_testlimit_SOURCES) $(tests_testopenf_SOURCES) man8dir = $(mandir)/man8 NROFF = nroff MANS = $(man_MANS) @@ -493,9 +498,11 @@ src_sbin_PRGS = src/chbind \ src/vdlimit \ src/vfiles \ src/vkill \ - src/vserver-stat + src/vserver-stat \ + src/vlimit -src_sbin_PRGS_broken = src/vlimit + +#src_sbin_PRGS_broken = src/vlimit src_GENFILES = src/setattr src_capchroot_SOURCES = src/capchroot.c src_capchroot_LDADD = lib/libvserver.a @@ -912,6 +919,11 @@ src/src_vkill-vkill.$(OBJEXT): src/$(am__dirstamp) \ src/vkill$(EXEEXT): $(src_vkill_OBJECTS) $(src_vkill_DEPENDENCIES) src/$(am__dirstamp) @rm -f src/vkill$(EXEEXT) $(LINK) $(src_vkill_LDFLAGS) $(src_vkill_OBJECTS) $(src_vkill_LDADD) $(LIBS) +src/vlimit.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vlimit$(EXEEXT): $(src_vlimit_OBJECTS) $(src_vlimit_DEPENDENCIES) src/$(am__dirstamp) + @rm -f src/vlimit$(EXEEXT) + $(LINK) $(src_vlimit_LDFLAGS) $(src_vlimit_OBJECTS) $(src_vlimit_LDADD) $(LIBS) src/vreboot.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/vreboot$(EXEEXT): $(src_vreboot_OBJECTS) $(src_vreboot_DEPENDENCIES) src/$(am__dirstamp) @@ -1071,6 +1083,7 @@ mostlyclean-compile: -rm -f src/vdlimit.$(OBJEXT) -rm -f src/vdu.$(OBJEXT) -rm -f src/vfiles.$(OBJEXT) + -rm -f src/vlimit.$(OBJEXT) -rm -f src/vreboot.$(OBJEXT) -rm -f src/vserver-stat.$(OBJEXT) -rm -f src/vsh.$(OBJEXT) @@ -1112,6 +1125,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vdlimit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vdu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vfiles.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vlimit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vreboot.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vserver-stat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vsh.Po@am__quote@ @@ -1506,6 +1520,22 @@ src/src_vkill-vkill.obj: src/vkill.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_vkill_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/src_vkill-vkill.obj `if test -f 'src/vkill.c'; then $(CYGPATH_W) 'src/vkill.c'; else $(CYGPATH_W) '$(srcdir)/src/vkill.c'; fi` +src/vlimit.o: src/vlimit.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/vlimit.o -MD -MP -MF "src/$(DEPDIR)/vlimit.Tpo" -c -o src/vlimit.o `test -f 'src/vlimit.c' || echo '$(srcdir)/'`src/vlimit.c; \ +@am__fastdepCC_TRUE@ then mv -f "src/$(DEPDIR)/vlimit.Tpo" "src/$(DEPDIR)/vlimit.Po"; else rm -f "src/$(DEPDIR)/vlimit.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/vlimit.c' object='src/vlimit.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='src/$(DEPDIR)/vlimit.Po' tmpdepfile='src/$(DEPDIR)/vlimit.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/vlimit.o `test -f 'src/vlimit.c' || echo '$(srcdir)/'`src/vlimit.c + +src/vlimit.obj: src/vlimit.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/vlimit.obj -MD -MP -MF "src/$(DEPDIR)/vlimit.Tpo" -c -o src/vlimit.obj `if test -f 'src/vlimit.c'; then $(CYGPATH_W) 'src/vlimit.c'; else $(CYGPATH_W) '$(srcdir)/src/vlimit.c'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "src/$(DEPDIR)/vlimit.Tpo" "src/$(DEPDIR)/vlimit.Po"; else rm -f "src/$(DEPDIR)/vlimit.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/vlimit.c' object='src/vlimit.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='src/$(DEPDIR)/vlimit.Po' tmpdepfile='src/$(DEPDIR)/vlimit.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/vlimit.obj `if test -f 'src/vlimit.c'; then $(CYGPATH_W) 'src/vlimit.c'; else $(CYGPATH_W) '$(srcdir)/src/vlimit.c'; fi` + src/vreboot.o: src/vreboot.c @am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/vreboot.o -MD -MP -MF "src/$(DEPDIR)/vreboot.Tpo" -c -o src/vreboot.o `test -f 'src/vreboot.c' || echo '$(srcdir)/'`src/vreboot.c; \ @am__fastdepCC_TRUE@ then mv -f "src/$(DEPDIR)/vreboot.Tpo" "src/$(DEPDIR)/vreboot.Po"; else rm -f "src/$(DEPDIR)/vreboot.Tpo"; exit 1; fi diff --git a/src/Makefile-files b/src/Makefile-files index b31a2ae..695aea8 100644 --- a/src/Makefile-files +++ b/src/Makefile-files @@ -42,14 +42,11 @@ src_sbin_PRGS = src/chbind \ src/vdu \ src/vsh \ src/vdlimit \ + src/vlimit \ src/vfiles \ src/vkill \ src/vserver-stat - -src_sbin_PRGS_broken = src/vlimit - - src_GENFILES = src/setattr src_capchroot_SOURCES = src/capchroot.c diff --git a/src/vlimit.c b/src/vlimit.c index 44fe511..6fd955b 100644 --- a/src/vlimit.c +++ b/src/vlimit.c @@ -195,7 +195,7 @@ int main (int argc, char *argv[]) if (set_mask & 1) limits[id].min = val; if (set_mask & 2) limits[id].soft = val; - if (set_mask & 4) limits[id].soft = val; + if (set_mask & 4) limits[id].hard = val; lim_mask |= (1<