X-Git-Url: http://git.onelab.eu/?p=util-vserver-pl.git;a=blobdiff_plain;f=python%2Fvserver.py;h=081fd8ae202bcbefd5bf381eec7e4eb453f29982;hp=8aa410e17d691c80feca75205653fae0d7baea32;hb=ecf0a3d24dc06f44a39a385af43fd804b2e45efa;hpb=21f5bb29128ab5ca5f52acbdcc10771cf154bdca diff --git a/python/vserver.py b/python/vserver.py index 8aa410e..081fd8a 100644 --- a/python/vserver.py +++ b/python/vserver.py @@ -129,6 +129,26 @@ class VServerConfig: os.path.walk(self.dir, add_to_cache, self.cache) +def adjust_lim(goal, curr): + gh = goal[0] + gs = goal[1] + gm = goal[2] + soft = curr[0] + hard = curr[1] + if gm != VC_LIM_KEEP: + if gm > soft: + soft = gm + if gm > hard: + hard = gm + if gs != VC_LIM_KEEP: + if gs > soft: + soft = gs + if gh != VC_LIM_KEEP: + if gh > hard: + hard = gh + return (soft, hard) + + class VServer: INITSCRIPTS = [('/etc/rc.vinit', 'start'), @@ -181,6 +201,9 @@ class VServer: resource_type = RLIMITS[type] try: vserverimpl.setrlimit(self.ctx, resource_type, hard, soft, min) + lim = resource.getrlimit(resource_type) + lim = adjust_lim((hard, soft, min), lim) + resource.setrlimit(resource_type, lim) except OSError, e: self.log("Error: setrlimit(%d, %s, %d, %d, %d): %s" % (self.ctx, type.lower(), hard, soft, min))